endset_three_editor 0.5.4 → 0.5.6

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.
@@ -1,11 +1,11 @@
1
1
  var pn = Object.defineProperty;
2
2
  var mn = (r, e, t) => e in r ? pn(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t;
3
3
  var Ue = (r, e, t) => mn(r, typeof e != "symbol" ? e + "" : e, t);
4
- import { toRaw as Ot, defineComponent as xe, ref as W, inject as gn, computed as $e, watchEffect as bn, resolveComponent as Cn, openBlock as R, createElementBlock as P, createElementVNode as C, normalizeClass as ie, withModifiers as Vt, unref as In, toDisplayString as oe, Fragment as ke, renderList as Dt, createBlock as nt, createCommentVNode as B, reactive as Jt, watch as Pe, withDirectives as k, vModelText as D, withKeys as ze, vModelCheckbox as yn, toRef as xn, provide as vn, createVNode as Ft, vShow as Le, shallowRef as ps, onMounted as Sn, onBeforeUnmount as Tn } from "vue";
4
+ import { toRaw as Ot, defineComponent as ve, ref as W, inject as gn, computed as $e, watchEffect as bn, resolveComponent as Cn, openBlock as R, createElementBlock as P, createElementVNode as C, normalizeClass as oe, withModifiers as Jt, unref as In, toDisplayString as ne, Fragment as Pe, renderList as Dt, createBlock as nt, createCommentVNode as Z, reactive as Qt, watch as be, withDirectives as k, vModelText as D, withKeys as ze, vModelCheckbox as yn, toRef as xn, provide as vn, createVNode as Ut, vShow as Le, shallowRef as ps, onMounted as Sn, onBeforeUnmount as Tn } from "vue";
5
5
  import * as w from "three";
6
- import { Controls as Bs, Vector3 as T, MOUSE as Ke, TOUCH as Ge, Quaternion as J, Spherical as ms, Vector2 as F, Ray as Mn, Plane as wn, MathUtils as Xs, Raycaster as Rn, Object3D as Be, MeshBasicMaterial as Ne, LineBasicMaterial as it, CylinderGeometry as q, BoxGeometry as K, BufferGeometry as De, Float32BufferAttribute as le, Mesh as v, OctahedronGeometry as gt, Line as de, TorusGeometry as Ve, SphereGeometry as En, Euler as kn, Matrix4 as fe, PlaneGeometry as Pn, DoubleSide as kt, OrthographicCamera as qs, ShaderMaterial as Ee, UniformsUtils as rs, WebGLRenderTarget as ge, HalfFloatType as we, NoBlending as Qt, Timer as Ln, Color as Z, RawShaderMaterial as Nn, ColorManagement as Pt, SRGBTransfer as On, LinearToneMapping as Dn, ReinhardToneMapping as Wn, CineonToneMapping as jn, ACESFilmicToneMapping as Fn, AgXToneMapping as Un, NeutralToneMapping as Hn, CustomToneMapping as zn, MeshDepthMaterial as Gn, RGBADepthPacking as Kn, AdditiveBlending as Zn, Loader as as, FileLoader as ct, SRGBColorSpace as he, Group as St, Material as ot, PointsMaterial as et, MeshPhongMaterial as Bn, LineSegments as Yt, Points as Tt, TrianglesDrawMode as Xn, TriangleFanDrawMode as _t, TriangleStripDrawMode as Vs, LoaderUtils as rt, MeshPhysicalMaterial as ce, LinearSRGBColorSpace as Ae, SpotLight as qn, PointLight as Vn, DirectionalLight as Jn, InstancedMesh as Qn, InstancedBufferAttribute as Yn, TextureLoader as _n, ImageBitmapLoader as $n, BufferAttribute as at, InterleavedBuffer as Js, InterleavedBufferAttribute as Qs, LinearMipmapLinearFilter as Ys, NearestMipmapLinearFilter as ei, LinearMipmapNearestFilter as ti, NearestMipmapNearestFilter as si, LinearFilter as $t, NearestFilter as _s, RepeatWrapping as es, MirroredRepeatWrapping as ni, ClampToEdgeWrapping as ii, MeshStandardMaterial as $s, PropertyBinding as oi, SkinnedMesh as ri, LineLoop as ai, PerspectiveCamera as li, Skeleton as Ai, AnimationClip as ci, Bone as ui, InterpolateDiscrete as di, InterpolateLinear as en, Texture as gs, VectorKeyframeTrack as bs, NumberKeyframeTrack as Cs, QuaternionKeyframeTrack as Is, FrontSide as hi, Interpolant as fi, Box3 as pi, Sphere as mi } from "three";
6
+ import { Controls as Zs, Vector3 as T, MOUSE as Ke, TOUCH as Ge, Quaternion as J, Spherical as ms, Vector2 as F, Ray as Mn, Plane as wn, MathUtils as Xs, Raycaster as Rn, Object3D as Ze, MeshBasicMaterial as Ne, LineBasicMaterial as it, CylinderGeometry as q, BoxGeometry as K, BufferGeometry as De, Float32BufferAttribute as le, Mesh as S, OctahedronGeometry as gt, Line as de, TorusGeometry as Ve, SphereGeometry as En, Euler as kn, Matrix4 as fe, PlaneGeometry as Pn, DoubleSide as kt, OrthographicCamera as qs, ShaderMaterial as ke, UniformsUtils as as, WebGLRenderTarget as ge, HalfFloatType as Re, NoBlending as Yt, Timer as Ln, Color as B, RawShaderMaterial as Nn, ColorManagement as Pt, SRGBTransfer as On, LinearToneMapping as Dn, ReinhardToneMapping as Wn, CineonToneMapping as jn, ACESFilmicToneMapping as Fn, AgXToneMapping as Un, NeutralToneMapping as Hn, CustomToneMapping as zn, MeshDepthMaterial as Gn, RGBADepthPacking as Kn, AdditiveBlending as Bn, Loader as ls, FileLoader as ct, SRGBColorSpace as he, Group as St, Material as ot, PointsMaterial as et, MeshPhongMaterial as Zn, LineSegments as _t, Points as Tt, TrianglesDrawMode as Xn, TriangleFanDrawMode as $t, TriangleStripDrawMode as Vs, LoaderUtils as rt, MeshPhysicalMaterial as ce, LinearSRGBColorSpace as Ae, SpotLight as qn, PointLight as Vn, DirectionalLight as Jn, InstancedMesh as Qn, InstancedBufferAttribute as Yn, TextureLoader as _n, ImageBitmapLoader as $n, BufferAttribute as at, InterleavedBuffer as Js, InterleavedBufferAttribute as Qs, LinearMipmapLinearFilter as Ys, NearestMipmapLinearFilter as ei, LinearMipmapNearestFilter as ti, NearestMipmapNearestFilter as si, LinearFilter as es, NearestFilter as _s, RepeatWrapping as ts, MirroredRepeatWrapping as ni, ClampToEdgeWrapping as ii, MeshStandardMaterial as $s, PropertyBinding as oi, SkinnedMesh as ri, LineLoop as ai, PerspectiveCamera as li, Skeleton as Ai, AnimationClip as ci, Bone as ui, InterpolateDiscrete as di, InterpolateLinear as en, Texture as gs, VectorKeyframeTrack as bs, NumberKeyframeTrack as Cs, QuaternionKeyframeTrack as Is, FrontSide as hi, Interpolant as fi, Box3 as pi, Sphere as mi } from "three";
7
7
  import ut from "@tweenjs/tween.js";
8
- const ys = { type: "change" }, ls = { type: "start" }, tn = { type: "end" }, bt = new Mn(), xs = new wn(), gi = Math.cos(70 * Xs.DEG2RAD), z = new T(), V = 2 * Math.PI, N = {
8
+ const ys = { type: "change" }, As = { type: "start" }, tn = { type: "end" }, bt = new Mn(), xs = new wn(), gi = Math.cos(70 * Xs.DEG2RAD), z = new T(), V = 2 * Math.PI, N = {
9
9
  NONE: -1,
10
10
  ROTATE: 0,
11
11
  DOLLY: 1,
@@ -14,8 +14,8 @@ const ys = { type: "change" }, ls = { type: "start" }, tn = { type: "end" }, bt
14
14
  TOUCH_PAN: 4,
15
15
  TOUCH_DOLLY_PAN: 5,
16
16
  TOUCH_DOLLY_ROTATE: 6
17
- }, Ut = 1e-6;
18
- class bi extends Bs {
17
+ }, Ht = 1e-6;
18
+ class bi extends Zs {
19
19
  /**
20
20
  * Constructs a new controls instance.
21
21
  *
@@ -172,7 +172,7 @@ class bi extends Bs {
172
172
  const o = this.object.zoom;
173
173
  this.object.zoom = Math.max(this.minZoom, Math.min(this.maxZoom, this.object.zoom / this._scale)), o !== this.object.zoom && (this.object.updateProjectionMatrix(), i = !0);
174
174
  }
175
- return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > Ut || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > Ut || this._lastTargetPosition.distanceToSquared(this.target) > Ut ? (this.dispatchEvent(ys), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
175
+ return this._scale = 1, this._performCursorZoom = !1, i || this._lastPosition.distanceToSquared(this.object.position) > Ht || 8 * (1 - this._lastQuaternion.dot(this.object.quaternion)) > Ht || this._lastTargetPosition.distanceToSquared(this.target) > Ht ? (this.dispatchEvent(ys), this._lastPosition.copy(this.object.position), this._lastQuaternion.copy(this.object.quaternion), this._lastTargetPosition.copy(this.target), !0) : !1;
176
176
  }
177
177
  _getAutoRotationAngle(e) {
178
178
  return e !== null ? V / 60 * this.autoRotateSpeed * e : V / 60 / 60 * this.autoRotateSpeed;
@@ -422,7 +422,7 @@ function xi(r) {
422
422
  default:
423
423
  this.state = N.NONE;
424
424
  }
425
- this.state !== N.NONE && this.dispatchEvent(ls);
425
+ this.state !== N.NONE && this.dispatchEvent(As);
426
426
  }
427
427
  function vi(r) {
428
428
  switch (this.state) {
@@ -441,7 +441,7 @@ function vi(r) {
441
441
  }
442
442
  }
443
443
  function Si(r) {
444
- this.enabled === !1 || this.enableZoom === !1 || this.state !== N.NONE || (r.preventDefault(), this.dispatchEvent(ls), this._handleMouseWheel(this._customWheelEvent(r)), this.dispatchEvent(tn));
444
+ this.enabled === !1 || this.enableZoom === !1 || this.state !== N.NONE || (r.preventDefault(), this.dispatchEvent(As), this._handleMouseWheel(this._customWheelEvent(r)), this.dispatchEvent(tn));
445
445
  }
446
446
  function Ti(r) {
447
447
  this.enabled !== !1 && this._handleKeyDown(r);
@@ -479,7 +479,7 @@ function Mi(r) {
479
479
  default:
480
480
  this.state = N.NONE;
481
481
  }
482
- this.state !== N.NONE && this.dispatchEvent(ls);
482
+ this.state !== N.NONE && this.dispatchEvent(As);
483
483
  }
484
484
  function wi(r) {
485
485
  switch (this._trackPointer(r), this.state) {
@@ -512,12 +512,12 @@ function Ei(r) {
512
512
  function ki(r) {
513
513
  r.key === "Control" && (this._controlActive = !1, this.domElement.getRootNode().removeEventListener("keyup", this._interceptControlUp, { passive: !0, capture: !0 }));
514
514
  }
515
- const Te = new Rn(), G = new T(), pe = new T(), j = new J(), vs = {
515
+ const Me = new Rn(), G = new T(), pe = new T(), j = new J(), vs = {
516
516
  X: new T(1, 0, 0),
517
517
  Y: new T(0, 1, 0),
518
518
  Z: new T(0, 0, 1)
519
- }, Ht = { type: "change" }, Ss = { type: "mouseDown", mode: null }, Ts = { type: "mouseUp", mode: null }, Ms = { type: "objectChange" };
520
- class Pi extends Bs {
519
+ }, zt = { type: "change" }, Ss = { type: "mouseDown", mode: null }, Ts = { type: "mouseUp", mode: null }, Ms = { type: "objectChange" };
520
+ class Pi extends Zs {
521
521
  /**
522
522
  * Constructs a new controls instance.
523
523
  *
@@ -533,20 +533,20 @@ class Pi extends Bs {
533
533
  const i = new Ui();
534
534
  this._plane = i, n.add(i);
535
535
  const o = this;
536
- function a(I, y) {
537
- let S = y;
538
- Object.defineProperty(o, I, {
536
+ function a(x, y) {
537
+ let v = y;
538
+ Object.defineProperty(o, x, {
539
539
  get: function() {
540
- return S !== void 0 ? S : y;
540
+ return v !== void 0 ? v : y;
541
541
  },
542
542
  set: function(M) {
543
- S !== M && (S = M, i[I] = M, s[I] = M, o.dispatchEvent({ type: I + "-changed", value: M }), o.dispatchEvent(Ht));
543
+ v !== M && (v = M, i[x] = M, s[x] = M, o.dispatchEvent({ type: x + "-changed", value: M }), o.dispatchEvent(zt));
544
544
  }
545
- }), o[I] = y, i[I] = y, s[I] = y;
545
+ }), o[x] = y, i[x] = y, s[x] = y;
546
546
  }
547
547
  a("camera", e), a("object", void 0), a("enabled", !0), a("axis", null), a("mode", "translate"), a("translationSnap", null), a("rotationSnap", null), a("scaleSnap", null), a("space", "world"), a("size", 1), a("dragging", !1), a("showX", !0), a("showY", !0), a("showZ", !0), a("showXY", !0), a("showYZ", !0), a("showXZ", !0), a("minX", -1 / 0), a("maxX", 1 / 0), a("minY", -1 / 0), a("maxY", 1 / 0), a("minZ", -1 / 0), a("maxZ", 1 / 0);
548
- const l = new T(), A = new T(), u = new J(), c = new J(), d = new T(), h = new J(), m = new T(), p = new T(), f = new T(), g = 0, x = new T();
549
- a("worldPosition", l), a("worldPositionStart", A), a("worldQuaternion", u), a("worldQuaternionStart", c), a("cameraPosition", d), a("cameraQuaternion", h), a("pointStart", m), a("pointEnd", p), a("rotationAxis", f), a("rotationAngle", g), a("eye", x), this._offset = new T(), this._startNorm = new T(), this._endNorm = new T(), this._cameraScale = new T(), this._parentPosition = new T(), this._parentQuaternion = new J(), this._parentQuaternionInv = new J(), this._parentScale = new T(), this._worldScaleStart = new T(), this._worldQuaternionInv = new J(), this._worldScale = new T(), this._positionStart = new T(), this._quaternionStart = new J(), this._scaleStart = new T(), this._getPointer = Li.bind(this), this._onPointerDown = Oi.bind(this), this._onPointerHover = Ni.bind(this), this._onPointerMove = Di.bind(this), this._onPointerUp = Wi.bind(this), t !== null && this.connect(t);
548
+ const l = new T(), A = new T(), u = new J(), c = new J(), h = new T(), d = new J(), g = new T(), f = new T(), m = new T(), p = 0, I = new T();
549
+ a("worldPosition", l), a("worldPositionStart", A), a("worldQuaternion", u), a("worldQuaternionStart", c), a("cameraPosition", h), a("cameraQuaternion", d), a("pointStart", g), a("pointEnd", f), a("rotationAxis", m), a("rotationAngle", p), a("eye", I), this._offset = new T(), this._startNorm = new T(), this._endNorm = new T(), this._cameraScale = new T(), this._parentPosition = new T(), this._parentQuaternion = new J(), this._parentQuaternionInv = new J(), this._parentScale = new T(), this._worldScaleStart = new T(), this._worldQuaternionInv = new J(), this._worldScale = new T(), this._positionStart = new T(), this._quaternionStart = new J(), this._scaleStart = new T(), this._getPointer = Li.bind(this), this._onPointerDown = Oi.bind(this), this._onPointerHover = Ni.bind(this), this._onPointerMove = Di.bind(this), this._onPointerUp = Wi.bind(this), t !== null && this.connect(t);
550
550
  }
551
551
  connect(e) {
552
552
  super.connect(e), this.domElement.addEventListener("pointerdown", this._onPointerDown), this.domElement.addEventListener("pointermove", this._onPointerHover), this.domElement.addEventListener("pointerup", this._onPointerUp), this.domElement.style.touchAction = "none";
@@ -565,14 +565,14 @@ class Pi extends Bs {
565
565
  }
566
566
  pointerHover(e) {
567
567
  if (this.object === void 0 || this.dragging === !0) return;
568
- e !== null && Te.setFromCamera(e, this.camera);
569
- const t = zt(this._gizmo.picker[this.mode], Te);
568
+ e !== null && Me.setFromCamera(e, this.camera);
569
+ const t = Gt(this._gizmo.picker[this.mode], Me);
570
570
  t ? this.axis = t.object.name : this.axis = null;
571
571
  }
572
572
  pointerDown(e) {
573
573
  if (!(this.object === void 0 || this.dragging === !0 || e != null && e.button !== 0) && this.axis !== null) {
574
- e !== null && Te.setFromCamera(e, this.camera);
575
- const t = zt(this._plane, Te, !0);
574
+ e !== null && Me.setFromCamera(e, this.camera);
575
+ const t = Gt(this._plane, Me, !0);
576
576
  t && (this.object.updateMatrixWorld(), this.object.parent.updateMatrixWorld(), this._positionStart.copy(this.object.position), this._quaternionStart.copy(this.object.quaternion), this._scaleStart.copy(this.object.scale), this.object.matrixWorld.decompose(this.worldPositionStart, this.worldQuaternionStart, this._worldScaleStart), this.pointStart.copy(t.point).sub(this.worldPositionStart)), this.dragging = !0, Ss.mode = this.mode, this.dispatchEvent(Ss);
577
577
  }
578
578
  }
@@ -580,8 +580,8 @@ class Pi extends Bs {
580
580
  const t = this.axis, n = this.mode, s = this.object;
581
581
  let i = this.space;
582
582
  if (n === "scale" ? i = "local" : (t === "E" || t === "XYZE" || t === "XYZ") && (i = "world"), s === void 0 || t === null || this.dragging === !1 || e !== null && e.button !== -1) return;
583
- e !== null && Te.setFromCamera(e, this.camera);
584
- const o = zt(this._plane, Te, !0);
583
+ e !== null && Me.setFromCamera(e, this.camera);
584
+ const o = Gt(this._plane, Me, !0);
585
585
  if (o) {
586
586
  if (this.pointEnd.copy(o.point).sub(this.worldPositionStart), n === "translate")
587
587
  this._offset.copy(this.pointEnd).sub(this.pointStart), i === "local" && t !== "XYZ" && this._offset.applyQuaternion(this._worldQuaternionInv), t.indexOf("X") === -1 && (this._offset.x = 0), t.indexOf("Y") === -1 && (this._offset.y = 0), t.indexOf("Z") === -1 && (this._offset.z = 0), i === "local" && t !== "XYZ" ? this._offset.applyQuaternion(this._quaternionStart).divide(this._parentScale) : this._offset.applyQuaternion(this._parentQuaternionInv).divide(this._parentScale), s.position.copy(this._offset).add(this._positionStart), this.translationSnap && (i === "local" && (s.position.applyQuaternion(j.copy(this._quaternionStart).invert()), t.search("X") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), t.search("Y") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), t.search("Z") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.position.applyQuaternion(this._quaternionStart)), i === "world" && (s.parent && s.position.add(G.setFromMatrixPosition(s.parent.matrixWorld)), t.search("X") !== -1 && (s.position.x = Math.round(s.position.x / this.translationSnap) * this.translationSnap), t.search("Y") !== -1 && (s.position.y = Math.round(s.position.y / this.translationSnap) * this.translationSnap), t.search("Z") !== -1 && (s.position.z = Math.round(s.position.z / this.translationSnap) * this.translationSnap), s.parent && s.position.sub(G.setFromMatrixPosition(s.parent.matrixWorld)))), s.position.x = Math.max(this.minX, Math.min(this.maxX, s.position.x)), s.position.y = Math.max(this.minY, Math.min(this.maxY, s.position.y)), s.position.z = Math.max(this.minZ, Math.min(this.maxZ, s.position.z));
@@ -598,7 +598,7 @@ class Pi extends Bs {
598
598
  let l = !1;
599
599
  t === "XYZE" ? (this.rotationAxis.copy(this._offset).cross(this.eye).normalize(), this.rotationAngle = this._offset.dot(G.copy(this.rotationAxis).cross(this.eye)) * a) : (t === "X" || t === "Y" || t === "Z") && (this.rotationAxis.copy(vs[t]), G.copy(vs[t]), i === "local" && G.applyQuaternion(this.worldQuaternion), G.cross(this.eye), G.length() === 0 ? l = !0 : this.rotationAngle = this._offset.dot(G.normalize()) * a), (t === "E" || l) && (this.rotationAxis.copy(this.eye), this.rotationAngle = this.pointEnd.angleTo(this.pointStart), this._startNorm.copy(this.pointStart).normalize(), this._endNorm.copy(this.pointEnd).normalize(), this.rotationAngle *= this._endNorm.cross(this._startNorm).dot(this.eye) < 0 ? 1 : -1), this.rotationSnap && (this.rotationAngle = Math.round(this.rotationAngle / this.rotationSnap) * this.rotationSnap), i === "local" && t !== "E" && t !== "XYZE" ? (s.quaternion.copy(this._quaternionStart), s.quaternion.multiply(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)).normalize()) : (this.rotationAxis.applyQuaternion(this._parentQuaternionInv), s.quaternion.copy(j.setFromAxisAngle(this.rotationAxis, this.rotationAngle)), s.quaternion.multiply(this._quaternionStart).normalize());
600
600
  }
601
- this.dispatchEvent(Ht), this.dispatchEvent(Ms);
601
+ this.dispatchEvent(zt), this.dispatchEvent(Ms);
602
602
  }
603
603
  }
604
604
  pointerUp(e) {
@@ -628,7 +628,7 @@ class Pi extends Bs {
628
628
  * Resets the object's position, rotation and scale to when the current transform began.
629
629
  */
630
630
  reset() {
631
- this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(Ht), this.dispatchEvent(Ms), this.pointStart.copy(this.pointEnd));
631
+ this.enabled && this.dragging && (this.object.position.copy(this._positionStart), this.object.quaternion.copy(this._quaternionStart), this.object.scale.copy(this._scaleStart), this.dispatchEvent(zt), this.dispatchEvent(Ms), this.pointStart.copy(this.pointEnd));
632
632
  }
633
633
  /**
634
634
  * Returns the raycaster that is used for user interaction. This object is shared between all
@@ -637,7 +637,7 @@ class Pi extends Bs {
637
637
  * @returns {Raycaster} The internal raycaster.
638
638
  */
639
639
  getRaycaster() {
640
- return Te;
640
+ return Me;
641
641
  }
642
642
  /**
643
643
  * Returns the transformation mode.
@@ -742,15 +742,15 @@ function Di(r) {
742
742
  function Wi(r) {
743
743
  this.enabled && (this.domElement.releasePointerCapture(r.pointerId), this.domElement.removeEventListener("pointermove", this._onPointerMove), this.pointerUp(this._getPointer(r)));
744
744
  }
745
- function zt(r, e, t) {
745
+ function Gt(r, e, t) {
746
746
  const n = e.intersectObject(r, !0);
747
747
  for (let s = 0; s < n.length; s++)
748
748
  if (n[s].object.visible || t)
749
749
  return n[s];
750
750
  return !1;
751
751
  }
752
- const Ct = new kn(), O = new T(0, 1, 0), ws = new T(0, 0, 0), Rs = new fe(), It = new J(), Mt = new J(), re = new T(), Es = new fe(), tt = new T(1, 0, 0), Re = new T(0, 1, 0), st = new T(0, 0, 1), yt = new T(), Je = new T(), Qe = new T();
753
- class ji extends Be {
752
+ const Ct = new kn(), O = new T(0, 1, 0), ws = new T(0, 0, 0), Rs = new fe(), It = new J(), Mt = new J(), re = new T(), Es = new fe(), tt = new T(1, 0, 0), Ee = new T(0, 1, 0), st = new T(0, 0, 1), yt = new T(), Je = new T(), Qe = new T();
753
+ class ji extends Ze {
754
754
  constructor(e) {
755
755
  super(), this.isTransformControlsRoot = !0, this.controls = e, this.visible = !1;
756
756
  }
@@ -765,7 +765,7 @@ class ji extends Be {
765
765
  });
766
766
  }
767
767
  }
768
- class Fi extends Be {
768
+ class Fi extends Ze {
769
769
  constructor() {
770
770
  super(), this.isTransformControlsGizmo = !0, this.type = "TransformControlsGizmo";
771
771
  const e = new Ne({
@@ -798,221 +798,221 @@ class Fi extends Be {
798
798
  u.color.setHex(255), u.opacity = 0.5;
799
799
  const c = e.clone();
800
800
  c.opacity = 0.25;
801
- const d = e.clone();
802
- d.color.setHex(16776960), d.opacity = 0.25;
803
801
  const h = e.clone();
804
- h.color.setHex(16776960);
805
- const m = e.clone();
806
- m.color.setHex(7895160), this.materialLib = {
802
+ h.color.setHex(16776960), h.opacity = 0.25;
803
+ const d = e.clone();
804
+ d.color.setHex(16776960);
805
+ const g = e.clone();
806
+ g.color.setHex(7895160), this.materialLib = {
807
807
  xAxis: i,
808
808
  yAxis: o,
809
809
  zAxis: a,
810
- active: h,
810
+ active: d,
811
811
  xAxisTransparent: l,
812
812
  yAxisTransparent: A,
813
813
  zAxisTransparent: u,
814
- activeTransparent: d
814
+ activeTransparent: h
815
815
  };
816
- const p = new q(0, 0.04, 0.1, 12);
817
- p.translate(0, 0.05, 0);
818
- const f = new K(0.08, 0.08, 0.08);
819
- f.translate(0, 0.04, 0);
820
- const g = new De();
821
- g.setAttribute("position", new le([0, 0, 0, 1, 0, 0], 3));
822
- const x = new q(75e-4, 75e-4, 0.5, 3);
823
- x.translate(0, 0.25, 0);
824
- function I(ee, ht) {
825
- const ne = new Ve(ee, 75e-4, 3, 64, ht * Math.PI * 2);
826
- return ne.rotateY(Math.PI / 2), ne.rotateX(Math.PI / 2), ne;
816
+ const f = new q(0, 0.04, 0.1, 12);
817
+ f.translate(0, 0.05, 0);
818
+ const m = new K(0.08, 0.08, 0.08);
819
+ m.translate(0, 0.04, 0);
820
+ const p = new De();
821
+ p.setAttribute("position", new le([0, 0, 0, 1, 0, 0], 3));
822
+ const I = new q(75e-4, 75e-4, 0.5, 3);
823
+ I.translate(0, 0.25, 0);
824
+ function x(ee, ht) {
825
+ const ie = new Ve(ee, 75e-4, 3, 64, ht * Math.PI * 2);
826
+ return ie.rotateY(Math.PI / 2), ie.rotateX(Math.PI / 2), ie;
827
827
  }
828
828
  function y() {
829
829
  const ee = new De();
830
830
  return ee.setAttribute("position", new le([0, 0, 0, 1, 1, 1], 3)), ee;
831
831
  }
832
- const S = {
832
+ const v = {
833
833
  X: [
834
- [new v(p, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
835
- [new v(p, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]],
836
- [new v(x, i), [0, 0, 0], [0, 0, -Math.PI / 2]]
834
+ [new S(f, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
835
+ [new S(f, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]],
836
+ [new S(I, i), [0, 0, 0], [0, 0, -Math.PI / 2]]
837
837
  ],
838
838
  Y: [
839
- [new v(p, o), [0, 0.5, 0]],
840
- [new v(p, o), [0, -0.5, 0], [Math.PI, 0, 0]],
841
- [new v(x, o)]
839
+ [new S(f, o), [0, 0.5, 0]],
840
+ [new S(f, o), [0, -0.5, 0], [Math.PI, 0, 0]],
841
+ [new S(I, o)]
842
842
  ],
843
843
  Z: [
844
- [new v(p, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
845
- [new v(p, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],
846
- [new v(x, a), null, [Math.PI / 2, 0, 0]]
844
+ [new S(f, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
845
+ [new S(f, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]],
846
+ [new S(I, a), null, [Math.PI / 2, 0, 0]]
847
847
  ],
848
848
  XYZ: [
849
- [new v(new gt(0.1, 0), c), [0, 0, 0]]
849
+ [new S(new gt(0.1, 0), c), [0, 0, 0]]
850
850
  ],
851
851
  XY: [
852
- [new v(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
852
+ [new S(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
853
853
  ],
854
854
  YZ: [
855
- [new v(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
855
+ [new S(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
856
856
  ],
857
857
  XZ: [
858
- [new v(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
858
+ [new S(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
859
859
  ]
860
860
  }, M = {
861
861
  X: [
862
- [new v(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
863
- [new v(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
862
+ [new S(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
863
+ [new S(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
864
864
  ],
865
865
  Y: [
866
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
867
- [new v(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
866
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
867
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
868
868
  ],
869
869
  Z: [
870
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
871
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
870
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
871
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
872
872
  ],
873
873
  XYZ: [
874
- [new v(new gt(0.2, 0), n)]
874
+ [new S(new gt(0.2, 0), n)]
875
875
  ],
876
876
  XY: [
877
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
877
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
878
878
  ],
879
879
  YZ: [
880
- [new v(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
880
+ [new S(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
881
881
  ],
882
882
  XZ: [
883
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
883
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
884
884
  ]
885
885
  }, L = {
886
886
  START: [
887
- [new v(new gt(0.01, 2), s), null, null, null, "helper"]
887
+ [new S(new gt(0.01, 2), s), null, null, null, "helper"]
888
888
  ],
889
889
  END: [
890
- [new v(new gt(0.01, 2), s), null, null, null, "helper"]
890
+ [new S(new gt(0.01, 2), s), null, null, null, "helper"]
891
891
  ],
892
892
  DELTA: [
893
893
  [new de(y(), s), null, null, null, "helper"]
894
894
  ],
895
895
  X: [
896
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
896
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
897
897
  ],
898
898
  Y: [
899
- [new de(g, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
899
+ [new de(p, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
900
900
  ],
901
901
  Z: [
902
- [new de(g, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
902
+ [new de(p, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
903
903
  ]
904
904
  }, Q = {
905
905
  XYZE: [
906
- [new v(I(0.5, 1), m), null, [0, Math.PI / 2, 0]]
906
+ [new S(x(0.5, 1), g), null, [0, Math.PI / 2, 0]]
907
907
  ],
908
908
  X: [
909
- [new v(I(0.5, 0.5), i)]
909
+ [new S(x(0.5, 0.5), i)]
910
910
  ],
911
911
  Y: [
912
- [new v(I(0.5, 0.5), o), null, [0, 0, -Math.PI / 2]]
912
+ [new S(x(0.5, 0.5), o), null, [0, 0, -Math.PI / 2]]
913
913
  ],
914
914
  Z: [
915
- [new v(I(0.5, 0.5), a), null, [0, Math.PI / 2, 0]]
915
+ [new S(x(0.5, 0.5), a), null, [0, Math.PI / 2, 0]]
916
916
  ],
917
917
  E: [
918
- [new v(I(0.75, 1), d), null, [0, Math.PI / 2, 0]]
918
+ [new S(x(0.75, 1), h), null, [0, Math.PI / 2, 0]]
919
919
  ]
920
920
  }, $ = {
921
921
  AXIS: [
922
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
922
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
923
923
  ]
924
924
  }, Y = {
925
925
  XYZE: [
926
- [new v(new En(0.25, 10, 8), n)]
926
+ [new S(new En(0.25, 10, 8), n)]
927
927
  ],
928
928
  X: [
929
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]
929
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, -Math.PI / 2, -Math.PI / 2]]
930
930
  ],
931
931
  Y: [
932
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [Math.PI / 2, 0, 0]]
932
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [Math.PI / 2, 0, 0]]
933
933
  ],
934
934
  Z: [
935
- [new v(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, 0, -Math.PI / 2]]
935
+ [new S(new Ve(0.5, 0.1, 4, 24), n), [0, 0, 0], [0, 0, -Math.PI / 2]]
936
936
  ],
937
937
  E: [
938
- [new v(new Ve(0.75, 0.1, 2, 24), n)]
938
+ [new S(new Ve(0.75, 0.1, 2, 24), n)]
939
939
  ]
940
- }, Se = {
940
+ }, Te = {
941
941
  X: [
942
- [new v(f, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
943
- [new v(x, i), [0, 0, 0], [0, 0, -Math.PI / 2]],
944
- [new v(f, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]]
942
+ [new S(m, i), [0.5, 0, 0], [0, 0, -Math.PI / 2]],
943
+ [new S(I, i), [0, 0, 0], [0, 0, -Math.PI / 2]],
944
+ [new S(m, i), [-0.5, 0, 0], [0, 0, Math.PI / 2]]
945
945
  ],
946
946
  Y: [
947
- [new v(f, o), [0, 0.5, 0]],
948
- [new v(x, o)],
949
- [new v(f, o), [0, -0.5, 0], [0, 0, Math.PI]]
947
+ [new S(m, o), [0, 0.5, 0]],
948
+ [new S(I, o)],
949
+ [new S(m, o), [0, -0.5, 0], [0, 0, Math.PI]]
950
950
  ],
951
951
  Z: [
952
- [new v(f, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
953
- [new v(x, a), [0, 0, 0], [Math.PI / 2, 0, 0]],
954
- [new v(f, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]
952
+ [new S(m, a), [0, 0, 0.5], [Math.PI / 2, 0, 0]],
953
+ [new S(I, a), [0, 0, 0], [Math.PI / 2, 0, 0]],
954
+ [new S(m, a), [0, 0, -0.5], [-Math.PI / 2, 0, 0]]
955
955
  ],
956
956
  XY: [
957
- [new v(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
957
+ [new S(new K(0.15, 0.15, 0.01), u), [0.15, 0.15, 0]]
958
958
  ],
959
959
  YZ: [
960
- [new v(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
960
+ [new S(new K(0.15, 0.15, 0.01), l), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
961
961
  ],
962
962
  XZ: [
963
- [new v(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
963
+ [new S(new K(0.15, 0.15, 0.01), A), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
964
964
  ],
965
965
  XYZ: [
966
- [new v(new K(0.1, 0.1, 0.1), c)]
966
+ [new S(new K(0.1, 0.1, 0.1), c)]
967
967
  ]
968
- }, jt = {
968
+ }, Ft = {
969
969
  X: [
970
- [new v(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
971
- [new v(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
970
+ [new S(new q(0.2, 0, 0.6, 4), n), [0.3, 0, 0], [0, 0, -Math.PI / 2]],
971
+ [new S(new q(0.2, 0, 0.6, 4), n), [-0.3, 0, 0], [0, 0, Math.PI / 2]]
972
972
  ],
973
973
  Y: [
974
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
975
- [new v(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
974
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0.3, 0]],
975
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, -0.3, 0], [0, 0, Math.PI]]
976
976
  ],
977
977
  Z: [
978
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
979
- [new v(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
978
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, 0.3], [Math.PI / 2, 0, 0]],
979
+ [new S(new q(0.2, 0, 0.6, 4), n), [0, 0, -0.3], [-Math.PI / 2, 0, 0]]
980
980
  ],
981
981
  XY: [
982
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
982
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0.15, 0]]
983
983
  ],
984
984
  YZ: [
985
- [new v(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
985
+ [new S(new K(0.2, 0.2, 0.01), n), [0, 0.15, 0.15], [0, Math.PI / 2, 0]]
986
986
  ],
987
987
  XZ: [
988
- [new v(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
988
+ [new S(new K(0.2, 0.2, 0.01), n), [0.15, 0, 0.15], [-Math.PI / 2, 0, 0]]
989
989
  ],
990
990
  XYZ: [
991
- [new v(new K(0.2, 0.2, 0.2), n), [0, 0, 0]]
991
+ [new S(new K(0.2, 0.2, 0.2), n), [0, 0, 0]]
992
992
  ]
993
993
  }, hn = {
994
994
  X: [
995
- [new de(g, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
995
+ [new de(p, s), [-1e3, 0, 0], null, [1e6, 1, 1], "helper"]
996
996
  ],
997
997
  Y: [
998
- [new de(g, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
998
+ [new de(p, s), [0, -1e3, 0], [0, 0, Math.PI / 2], [1e6, 1, 1], "helper"]
999
999
  ],
1000
1000
  Z: [
1001
- [new de(g, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
1001
+ [new de(p, s), [0, 0, -1e3], [0, -Math.PI / 2, 0], [1e6, 1, 1], "helper"]
1002
1002
  ]
1003
1003
  };
1004
1004
  function ue(ee) {
1005
- const ht = new Be();
1006
- for (const ne in ee)
1007
- for (let Fe = ee[ne].length; Fe--; ) {
1008
- const X = ee[ne][Fe][0].clone(), ft = ee[ne][Fe][1], pt = ee[ne][Fe][2], mt = ee[ne][Fe][3], fn = ee[ne][Fe][4];
1009
- X.name = ne, X.tag = fn, ft && X.position.set(ft[0], ft[1], ft[2]), pt && X.rotation.set(pt[0], pt[1], pt[2]), mt && X.scale.set(mt[0], mt[1], mt[2]), X.updateMatrix();
1005
+ const ht = new Ze();
1006
+ for (const ie in ee)
1007
+ for (let Fe = ee[ie].length; Fe--; ) {
1008
+ const X = ee[ie][Fe][0].clone(), ft = ee[ie][Fe][1], pt = ee[ie][Fe][2], mt = ee[ie][Fe][3], fn = ee[ie][Fe][4];
1009
+ X.name = ie, X.tag = fn, ft && X.position.set(ft[0], ft[1], ft[2]), pt && X.rotation.set(pt[0], pt[1], pt[2]), mt && X.scale.set(mt[0], mt[1], mt[2]), X.updateMatrix();
1010
1010
  const fs = X.geometry.clone();
1011
1011
  fs.applyMatrix4(X.matrix), X.geometry = fs, X.renderOrder = 1 / 0, X.position.set(0, 0, 0), X.rotation.set(0, 0, 0), X.scale.set(1, 1, 1), ht.add(X);
1012
1012
  }
1013
1013
  return ht;
1014
1014
  }
1015
- this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = ue(S)), this.add(this.gizmo.rotate = ue(Q)), this.add(this.gizmo.scale = ue(Se)), this.add(this.picker.translate = ue(M)), this.add(this.picker.rotate = ue(Y)), this.add(this.picker.scale = ue(jt)), this.add(this.helper.translate = ue(L)), this.add(this.helper.rotate = ue($)), this.add(this.helper.scale = ue(hn)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;
1015
+ this.gizmo = {}, this.picker = {}, this.helper = {}, this.add(this.gizmo.translate = ue(v)), this.add(this.gizmo.rotate = ue(Q)), this.add(this.gizmo.scale = ue(Te)), this.add(this.picker.translate = ue(M)), this.add(this.picker.rotate = ue(Y)), this.add(this.picker.scale = ue(Ft)), this.add(this.helper.translate = ue(L)), this.add(this.helper.rotate = ue($)), this.add(this.helper.scale = ue(hn)), this.picker.translate.visible = !1, this.picker.rotate.visible = !1, this.picker.scale.visible = !1;
1016
1016
  }
1017
1017
  // updateMatrixWorld will update transformations and appearance of individual handles
1018
1018
  updateMatrixWorld(e) {
@@ -1025,17 +1025,17 @@ class Fi extends Be {
1025
1025
  o.visible = !0, o.rotation.set(0, 0, 0), o.position.copy(this.worldPosition);
1026
1026
  let a;
1027
1027
  if (this.camera.isOrthographicCamera ? a = (this.camera.top - this.camera.bottom) / this.camera.zoom : a = this.worldPosition.distanceTo(this.cameraPosition) * Math.min(1.9 * Math.tan(Math.PI * this.camera.fov / 360) / this.camera.zoom, 7), o.scale.set(1, 1, 1).multiplyScalar(a * this.size / 4), o.tag === "helper") {
1028
- o.visible = !1, o.name === "AXIS" ? (o.visible = !!this.axis, this.axis === "X" && (j.setFromEuler(Ct.set(0, 0, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Y" && (j.setFromEuler(Ct.set(0, 0, Math.PI / 2)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Z" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "XYZE" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), O.copy(this.rotationAxis), o.quaternion.setFromRotationMatrix(Rs.lookAt(ws, O, Re)), o.quaternion.multiply(j), o.visible = this.dragging), this.axis === "E" && (o.visible = !1)) : o.name === "START" ? (o.position.copy(this.worldPositionStart), o.visible = this.dragging) : o.name === "END" ? (o.position.copy(this.worldPosition), o.visible = this.dragging) : o.name === "DELTA" ? (o.position.copy(this.worldPositionStart), o.quaternion.copy(this.worldQuaternionStart), G.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), G.applyQuaternion(this.worldQuaternionStart.clone().invert()), o.scale.copy(G), o.visible = this.dragging) : (o.quaternion.copy(n), this.dragging ? o.position.copy(this.worldPositionStart) : o.position.copy(this.worldPosition), this.axis && (o.visible = this.axis.search(o.name) !== -1));
1028
+ o.visible = !1, o.name === "AXIS" ? (o.visible = !!this.axis, this.axis === "X" && (j.setFromEuler(Ct.set(0, 0, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Y" && (j.setFromEuler(Ct.set(0, 0, Math.PI / 2)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "Z" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), o.quaternion.copy(n).multiply(j), Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.9 && (o.visible = !1)), this.axis === "XYZE" && (j.setFromEuler(Ct.set(0, Math.PI / 2, 0)), O.copy(this.rotationAxis), o.quaternion.setFromRotationMatrix(Rs.lookAt(ws, O, Ee)), o.quaternion.multiply(j), o.visible = this.dragging), this.axis === "E" && (o.visible = !1)) : o.name === "START" ? (o.position.copy(this.worldPositionStart), o.visible = this.dragging) : o.name === "END" ? (o.position.copy(this.worldPosition), o.visible = this.dragging) : o.name === "DELTA" ? (o.position.copy(this.worldPositionStart), o.quaternion.copy(this.worldQuaternionStart), G.set(1e-10, 1e-10, 1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1), G.applyQuaternion(this.worldQuaternionStart.clone().invert()), o.scale.copy(G), o.visible = this.dragging) : (o.quaternion.copy(n), this.dragging ? o.position.copy(this.worldPositionStart) : o.position.copy(this.worldPosition), this.axis && (o.visible = this.axis.search(o.name) !== -1));
1029
1029
  continue;
1030
1030
  }
1031
- o.quaternion.copy(n), this.mode === "translate" || this.mode === "scale" ? (o.name === "X" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Y" && Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Z" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XY" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "YZ" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XZ" && Math.abs(O.copy(Re).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1)) : this.mode === "rotate" && (It.copy(n), O.copy(this.eye).applyQuaternion(j.copy(n).invert()), o.name.search("E") !== -1 && o.quaternion.setFromRotationMatrix(Rs.lookAt(this.eye, ws, Re)), o.name === "X" && (j.setFromAxisAngle(tt, Math.atan2(-O.y, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Y" && (j.setFromAxisAngle(Re, Math.atan2(O.x, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Z" && (j.setFromAxisAngle(st, Math.atan2(O.y, O.x)), j.multiplyQuaternions(It, j), o.quaternion.copy(j))), o.visible = o.visible && (o.name.indexOf("X") === -1 || this.showX), o.visible = o.visible && (o.name.indexOf("Y") === -1 || this.showY), o.visible = o.visible && (o.name.indexOf("Z") === -1 || this.showZ), o.visible = o.visible && (o.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ), o.visible = o.visible && (o.name.indexOf("XY") === -1 || this.showXY), o.visible = o.visible && (o.name.indexOf("YZ") === -1 || this.showYZ), o.visible = o.visible && (o.name.indexOf("XZ") === -1 || this.showXZ), o.material._color = o.material._color || o.material.color.clone(), o.material._opacity = o.material._opacity || o.material.opacity, o.material.color.copy(o.material._color), o.material.opacity = o.material._opacity, this.enabled && this.axis && (o.name === this.axis ? (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1) : this.axis.split("").some(function(l) {
1031
+ o.quaternion.copy(n), this.mode === "translate" || this.mode === "scale" ? (o.name === "X" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Y" && Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "Z" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) > 0.99 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XY" && Math.abs(O.copy(st).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "YZ" && Math.abs(O.copy(tt).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1), o.name === "XZ" && Math.abs(O.copy(Ee).applyQuaternion(n).dot(this.eye)) < 0.2 && (o.scale.set(1e-10, 1e-10, 1e-10), o.visible = !1)) : this.mode === "rotate" && (It.copy(n), O.copy(this.eye).applyQuaternion(j.copy(n).invert()), o.name.search("E") !== -1 && o.quaternion.setFromRotationMatrix(Rs.lookAt(this.eye, ws, Ee)), o.name === "X" && (j.setFromAxisAngle(tt, Math.atan2(-O.y, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Y" && (j.setFromAxisAngle(Ee, Math.atan2(O.x, O.z)), j.multiplyQuaternions(It, j), o.quaternion.copy(j)), o.name === "Z" && (j.setFromAxisAngle(st, Math.atan2(O.y, O.x)), j.multiplyQuaternions(It, j), o.quaternion.copy(j))), o.visible = o.visible && (o.name.indexOf("X") === -1 || this.showX), o.visible = o.visible && (o.name.indexOf("Y") === -1 || this.showY), o.visible = o.visible && (o.name.indexOf("Z") === -1 || this.showZ), o.visible = o.visible && (o.name.indexOf("E") === -1 || this.showX && this.showY && this.showZ), o.visible = o.visible && (o.name.indexOf("XY") === -1 || this.showXY), o.visible = o.visible && (o.name.indexOf("YZ") === -1 || this.showYZ), o.visible = o.visible && (o.name.indexOf("XZ") === -1 || this.showXZ), o.material._color = o.material._color || o.material.color.clone(), o.material._opacity = o.material._opacity || o.material.opacity, o.material.color.copy(o.material._color), o.material.opacity = o.material._opacity, this.enabled && this.axis && (o.name === this.axis ? (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1) : this.axis.split("").some(function(l) {
1032
1032
  return o.name === l;
1033
1033
  }) && (o.material.color.copy(this.materialLib.active.color), o.material.opacity = 1));
1034
1034
  }
1035
1035
  super.updateMatrixWorld(e);
1036
1036
  }
1037
1037
  }
1038
- class Ui extends v {
1038
+ class Ui extends S {
1039
1039
  constructor() {
1040
1040
  super(
1041
1041
  new Pn(1e5, 1e5, 2, 2),
@@ -1044,7 +1044,7 @@ class Ui extends v {
1044
1044
  }
1045
1045
  updateMatrixWorld(e) {
1046
1046
  let t = this.space;
1047
- switch (this.position.copy(this.worldPosition), this.mode === "scale" && (t = "local"), yt.copy(tt).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Je.copy(Re).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Qe.copy(st).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), O.copy(Je), this.mode) {
1047
+ switch (this.position.copy(this.worldPosition), this.mode === "scale" && (t = "local"), yt.copy(tt).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Je.copy(Ee).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), Qe.copy(st).applyQuaternion(t === "local" ? this.worldQuaternion : Mt), O.copy(Je), this.mode) {
1048
1048
  case "translate":
1049
1049
  case "scale":
1050
1050
  switch (this.axis) {
@@ -1164,14 +1164,14 @@ class zi extends De {
1164
1164
  }
1165
1165
  }
1166
1166
  const Gi = new zi();
1167
- class As {
1167
+ class cs {
1168
1168
  /**
1169
1169
  * Constructs a new full screen quad.
1170
1170
  *
1171
1171
  * @param {?Material} material - The material to render te full screen quad with.
1172
1172
  */
1173
1173
  constructor(e) {
1174
- this._mesh = new v(Gi, e);
1174
+ this._mesh = new S(Gi, e);
1175
1175
  }
1176
1176
  /**
1177
1177
  * Frees the GPU-related resources allocated by this instance. Call this
@@ -1210,13 +1210,13 @@ class Ki extends qe {
1210
1210
  * the read buffer.
1211
1211
  */
1212
1212
  constructor(e, t = "tDiffuse") {
1213
- super(), this.textureID = t, this.uniforms = null, this.material = null, e instanceof Ee ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = rs.clone(e.uniforms), this.material = new Ee({
1213
+ super(), this.textureID = t, this.uniforms = null, this.material = null, e instanceof ke ? (this.uniforms = e.uniforms, this.material = e) : e && (this.uniforms = as.clone(e.uniforms), this.material = new ke({
1214
1214
  name: e.name !== void 0 ? e.name : "unspecified",
1215
1215
  defines: Object.assign({}, e.defines),
1216
1216
  uniforms: this.uniforms,
1217
1217
  vertexShader: e.vertexShader,
1218
1218
  fragmentShader: e.fragmentShader
1219
- })), this._fsQuad = new As(this.material);
1219
+ })), this._fsQuad = new cs(this.material);
1220
1220
  }
1221
1221
  /**
1222
1222
  * Performs the shader pass.
@@ -1268,7 +1268,7 @@ class ks extends qe {
1268
1268
  this.inverse ? (o = 0, a = 1) : (o = 1, a = 0), i.buffers.stencil.setTest(!0), i.buffers.stencil.setOp(s.REPLACE, s.REPLACE, s.REPLACE), i.buffers.stencil.setFunc(s.ALWAYS, o, 4294967295), i.buffers.stencil.setClear(a), i.buffers.stencil.setLocked(!0), e.setRenderTarget(n), this.clear && e.clear(), e.render(this.scene, this.camera), e.setRenderTarget(t), this.clear && e.clear(), e.render(this.scene, this.camera), i.buffers.color.setLocked(!1), i.buffers.depth.setLocked(!1), i.buffers.color.setMask(!0), i.buffers.depth.setMask(!0), i.buffers.stencil.setLocked(!1), i.buffers.stencil.setFunc(s.EQUAL, 1, 4294967295), i.buffers.stencil.setOp(s.KEEP, s.KEEP, s.KEEP), i.buffers.stencil.setLocked(!0);
1269
1269
  }
1270
1270
  }
1271
- class Zi extends qe {
1271
+ class Bi extends qe {
1272
1272
  /**
1273
1273
  * Constructs a new clear mask pass.
1274
1274
  */
@@ -1290,7 +1290,7 @@ class Zi extends qe {
1290
1290
  e.state.buffers.stencil.setLocked(!1), e.state.buffers.stencil.setTest(!1);
1291
1291
  }
1292
1292
  }
1293
- class Bi {
1293
+ class Zi {
1294
1294
  /**
1295
1295
  * Constructs a new effect composer.
1296
1296
  *
@@ -1302,10 +1302,10 @@ class Bi {
1302
1302
  constructor(e, t) {
1303
1303
  if (this.renderer = e, this._pixelRatio = e.getPixelRatio(), t === void 0) {
1304
1304
  const n = e.getSize(new F());
1305
- this._width = n.width, this._height = n.height, t = new ge(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: we }), t.texture.name = "EffectComposer.rt1";
1305
+ this._width = n.width, this._height = n.height, t = new ge(this._width * this._pixelRatio, this._height * this._pixelRatio, { type: Re }), t.texture.name = "EffectComposer.rt1";
1306
1306
  } else
1307
1307
  this._width = t.width, this._height = t.height;
1308
- this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Ki(sn), this.copyPass.material.blending = Qt, this.timer = new Ln();
1308
+ this.renderTarget1 = t, this.renderTarget2 = t.clone(), this.renderTarget2.texture.name = "EffectComposer.rt2", this.writeBuffer = this.renderTarget1, this.readBuffer = this.renderTarget2, this.renderToScreen = !0, this.passes = [], this.copyPass = new Ki(sn), this.copyPass.material.blending = Yt, this.timer = new Ln();
1309
1309
  }
1310
1310
  /**
1311
1311
  * Swaps the internal read/write buffers.
@@ -1372,7 +1372,7 @@ class Bi {
1372
1372
  }
1373
1373
  this.swapBuffers();
1374
1374
  }
1375
- ks !== void 0 && (o instanceof ks ? n = !0 : o instanceof Zi && (n = !1));
1375
+ ks !== void 0 && (o instanceof ks ? n = !0 : o instanceof Bi && (n = !1));
1376
1376
  }
1377
1377
  }
1378
1378
  this.renderer.setRenderTarget(t);
@@ -1433,7 +1433,7 @@ class Xi extends qe {
1433
1433
  * @param {?number} [clearAlpha=null] - The clear alpha of the render pass.
1434
1434
  */
1435
1435
  constructor(e, t, n = null, s = null, i = null) {
1436
- super(), this.scene = e, this.camera = t, this.overrideMaterial = n, this.clearColor = s, this.clearAlpha = i, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this.isRenderPass = !0, this._oldClearColor = new Z();
1436
+ super(), this.scene = e, this.camera = t, this.overrideMaterial = n, this.clearColor = s, this.clearAlpha = i, this.clear = !0, this.clearDepth = !1, this.needsSwap = !1, this.isRenderPass = !0, this._oldClearColor = new B();
1437
1437
  }
1438
1438
  /**
1439
1439
  * Performs a beauty pass with the configured scene and camera.
@@ -1544,12 +1544,12 @@ class qi extends qe {
1544
1544
  * Constructs a new output pass.
1545
1545
  */
1546
1546
  constructor() {
1547
- super(), this.isOutputPass = !0, this.uniforms = rs.clone(xt.uniforms), this.material = new Nn({
1547
+ super(), this.isOutputPass = !0, this.uniforms = as.clone(xt.uniforms), this.material = new Nn({
1548
1548
  name: xt.name,
1549
1549
  uniforms: this.uniforms,
1550
1550
  vertexShader: xt.vertexShader,
1551
1551
  fragmentShader: xt.fragmentShader
1552
- }), this._fsQuad = new As(this.material), this._outputColorSpace = null, this._toneMapping = null;
1552
+ }), this._fsQuad = new cs(this.material), this._outputColorSpace = null, this._toneMapping = null;
1553
1553
  }
1554
1554
  /**
1555
1555
  * Performs the output pass.
@@ -1573,7 +1573,7 @@ class qi extends qe {
1573
1573
  this.material.dispose(), this._fsQuad.dispose();
1574
1574
  }
1575
1575
  }
1576
- class be extends qe {
1576
+ class Ce extends qe {
1577
1577
  /**
1578
1578
  * Constructs a new outline pass.
1579
1579
  *
@@ -1584,23 +1584,23 @@ class be extends qe {
1584
1584
  *
1585
1585
  */
1586
1586
  constructor(e, t, n, s) {
1587
- super(), this.renderScene = t, this.renderCamera = n, this.selectedObjects = s !== void 0 ? s : [], this.visibleEdgeColor = new Z(1, 1, 1), this.hiddenEdgeColor = new Z(0.1, 0.04, 0.02), this.edgeGlow = 0, this.usePatternTexture = !1, this.patternTexture = null, this.edgeThickness = 1, this.edgeStrength = 3, this.downSampleRatio = 2, this.pulsePeriod = 0, this._visibilityCache = /* @__PURE__ */ new Map(), this._selectionCache = /* @__PURE__ */ new Set(), this.resolution = e !== void 0 ? new F(e.x, e.y) : new F(256, 256);
1587
+ super(), this.renderScene = t, this.renderCamera = n, this.selectedObjects = s !== void 0 ? s : [], this.visibleEdgeColor = new B(1, 1, 1), this.hiddenEdgeColor = new B(0.1, 0.04, 0.02), this.edgeGlow = 0, this.usePatternTexture = !1, this.patternTexture = null, this.edgeThickness = 1, this.edgeStrength = 3, this.downSampleRatio = 2, this.pulsePeriod = 0, this._visibilityCache = /* @__PURE__ */ new Map(), this._selectionCache = /* @__PURE__ */ new Set(), this.resolution = e !== void 0 ? new F(e.x, e.y) : new F(256, 256);
1588
1588
  const i = Math.round(this.resolution.x / this.downSampleRatio), o = Math.round(this.resolution.y / this.downSampleRatio);
1589
- this.renderTargetMaskBuffer = new ge(this.resolution.x, this.resolution.y), this.renderTargetMaskBuffer.texture.name = "OutlinePass.mask", this.renderTargetMaskBuffer.texture.generateMipmaps = !1, this.depthMaterial = new Gn(), this.depthMaterial.side = kt, this.depthMaterial.depthPacking = Kn, this.depthMaterial.blending = Qt, this.prepareMaskMaterial = this._getPrepareMaskMaterial(), this.prepareMaskMaterial.side = kt, this.prepareMaskMaterial.fragmentShader = u(this.prepareMaskMaterial.fragmentShader, this.renderCamera), this.renderTargetDepthBuffer = new ge(this.resolution.x, this.resolution.y, { type: we }), this.renderTargetDepthBuffer.texture.name = "OutlinePass.depth", this.renderTargetDepthBuffer.texture.generateMipmaps = !1, this.renderTargetMaskDownSampleBuffer = new ge(i, o, { type: we }), this.renderTargetMaskDownSampleBuffer.texture.name = "OutlinePass.depthDownSample", this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps = !1, this.renderTargetBlurBuffer1 = new ge(i, o, { type: we }), this.renderTargetBlurBuffer1.texture.name = "OutlinePass.blur1", this.renderTargetBlurBuffer1.texture.generateMipmaps = !1, this.renderTargetBlurBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: we }), this.renderTargetBlurBuffer2.texture.name = "OutlinePass.blur2", this.renderTargetBlurBuffer2.texture.generateMipmaps = !1, this.edgeDetectionMaterial = this._getEdgeDetectionMaterial(), this.renderTargetEdgeBuffer1 = new ge(i, o, { type: we }), this.renderTargetEdgeBuffer1.texture.name = "OutlinePass.edge1", this.renderTargetEdgeBuffer1.texture.generateMipmaps = !1, this.renderTargetEdgeBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: we }), this.renderTargetEdgeBuffer2.texture.name = "OutlinePass.edge2", this.renderTargetEdgeBuffer2.texture.generateMipmaps = !1;
1589
+ this.renderTargetMaskBuffer = new ge(this.resolution.x, this.resolution.y), this.renderTargetMaskBuffer.texture.name = "OutlinePass.mask", this.renderTargetMaskBuffer.texture.generateMipmaps = !1, this.depthMaterial = new Gn(), this.depthMaterial.side = kt, this.depthMaterial.depthPacking = Kn, this.depthMaterial.blending = Yt, this.prepareMaskMaterial = this._getPrepareMaskMaterial(), this.prepareMaskMaterial.side = kt, this.prepareMaskMaterial.fragmentShader = u(this.prepareMaskMaterial.fragmentShader, this.renderCamera), this.renderTargetDepthBuffer = new ge(this.resolution.x, this.resolution.y, { type: Re }), this.renderTargetDepthBuffer.texture.name = "OutlinePass.depth", this.renderTargetDepthBuffer.texture.generateMipmaps = !1, this.renderTargetMaskDownSampleBuffer = new ge(i, o, { type: Re }), this.renderTargetMaskDownSampleBuffer.texture.name = "OutlinePass.depthDownSample", this.renderTargetMaskDownSampleBuffer.texture.generateMipmaps = !1, this.renderTargetBlurBuffer1 = new ge(i, o, { type: Re }), this.renderTargetBlurBuffer1.texture.name = "OutlinePass.blur1", this.renderTargetBlurBuffer1.texture.generateMipmaps = !1, this.renderTargetBlurBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: Re }), this.renderTargetBlurBuffer2.texture.name = "OutlinePass.blur2", this.renderTargetBlurBuffer2.texture.generateMipmaps = !1, this.edgeDetectionMaterial = this._getEdgeDetectionMaterial(), this.renderTargetEdgeBuffer1 = new ge(i, o, { type: Re }), this.renderTargetEdgeBuffer1.texture.name = "OutlinePass.edge1", this.renderTargetEdgeBuffer1.texture.generateMipmaps = !1, this.renderTargetEdgeBuffer2 = new ge(Math.round(i / 2), Math.round(o / 2), { type: Re }), this.renderTargetEdgeBuffer2.texture.name = "OutlinePass.edge2", this.renderTargetEdgeBuffer2.texture.generateMipmaps = !1;
1590
1590
  const a = 4, l = 4;
1591
1591
  this.separableBlurMaterial1 = this._getSeparableBlurMaterial(a), this.separableBlurMaterial1.uniforms.texSize.value.set(i, o), this.separableBlurMaterial1.uniforms.kernelRadius.value = 1, this.separableBlurMaterial2 = this._getSeparableBlurMaterial(l), this.separableBlurMaterial2.uniforms.texSize.value.set(Math.round(i / 2), Math.round(o / 2)), this.separableBlurMaterial2.uniforms.kernelRadius.value = l, this.overlayMaterial = this._getOverlayMaterial();
1592
1592
  const A = sn;
1593
- this.copyUniforms = rs.clone(A.uniforms), this.materialCopy = new Ee({
1593
+ this.copyUniforms = as.clone(A.uniforms), this.materialCopy = new ke({
1594
1594
  uniforms: this.copyUniforms,
1595
1595
  vertexShader: A.vertexShader,
1596
1596
  fragmentShader: A.fragmentShader,
1597
- blending: Qt,
1597
+ blending: Yt,
1598
1598
  depthTest: !1,
1599
1599
  depthWrite: !1
1600
- }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new Z(), this.oldClearAlpha = 1, this._fsQuad = new As(null), this.tempPulseColor1 = new Z(), this.tempPulseColor2 = new Z(), this.textureMatrix = new fe();
1601
- function u(c, d) {
1602
- const h = d.isPerspectiveCamera ? "perspective" : "orthographic";
1603
- return c.replace(/DEPTH_TO_VIEW_Z/g, h + "DepthToViewZ");
1600
+ }), this.enabled = !0, this.needsSwap = !1, this._oldClearColor = new B(), this.oldClearAlpha = 1, this._fsQuad = new cs(null), this.tempPulseColor1 = new B(), this.tempPulseColor2 = new B(), this.textureMatrix = new fe();
1601
+ function u(c, h) {
1602
+ const d = h.isPerspectiveCamera ? "perspective" : "orthographic";
1603
+ return c.replace(/DEPTH_TO_VIEW_Z/g, d + "DepthToViewZ");
1604
1604
  }
1605
1605
  }
1606
1606
  /**
@@ -1642,7 +1642,7 @@ class be extends qe {
1642
1642
  const A = 0.625 + Math.cos(performance.now() * 0.01 / this.pulsePeriod) * 0.75 / 2;
1643
1643
  this.tempPulseColor1.multiplyScalar(A), this.tempPulseColor2.multiplyScalar(A);
1644
1644
  }
1645
- this._fsQuad.material = this.edgeDetectionMaterial, this.edgeDetectionMaterial.uniforms.maskTexture.value = this.renderTargetMaskDownSampleBuffer.texture, this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height), this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value = this.tempPulseColor1, this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value = this.tempPulseColor2, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial1, this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = be.BlurDirectionX, this.separableBlurMaterial1.uniforms.kernelRadius.value = this.edgeThickness, e.setRenderTarget(this.renderTargetBlurBuffer1), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetBlurBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = be.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial2, this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial2.uniforms.direction.value = be.BlurDirectionX, e.setRenderTarget(this.renderTargetBlurBuffer2), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetBlurBuffer2.texture, this.separableBlurMaterial2.uniforms.direction.value = be.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer2), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.overlayMaterial, this.overlayMaterial.uniforms.maskTexture.value = this.renderTargetMaskBuffer.texture, this.overlayMaterial.uniforms.edgeTexture1.value = this.renderTargetEdgeBuffer1.texture, this.overlayMaterial.uniforms.edgeTexture2.value = this.renderTargetEdgeBuffer2.texture, this.overlayMaterial.uniforms.patternTexture.value = this.patternTexture, this.overlayMaterial.uniforms.edgeStrength.value = this.edgeStrength, this.overlayMaterial.uniforms.edgeGlow.value = this.edgeGlow, this.overlayMaterial.uniforms.usePatternTexture.value = this.usePatternTexture, i && e.state.buffers.stencil.setTest(!0), e.setRenderTarget(n), this._fsQuad.render(e), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = o;
1645
+ this._fsQuad.material = this.edgeDetectionMaterial, this.edgeDetectionMaterial.uniforms.maskTexture.value = this.renderTargetMaskDownSampleBuffer.texture, this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width, this.renderTargetMaskDownSampleBuffer.height), this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value = this.tempPulseColor1, this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value = this.tempPulseColor2, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial1, this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = Ce.BlurDirectionX, this.separableBlurMaterial1.uniforms.kernelRadius.value = this.edgeThickness, e.setRenderTarget(this.renderTargetBlurBuffer1), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial1.uniforms.colorTexture.value = this.renderTargetBlurBuffer1.texture, this.separableBlurMaterial1.uniforms.direction.value = Ce.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer1), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.separableBlurMaterial2, this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetEdgeBuffer1.texture, this.separableBlurMaterial2.uniforms.direction.value = Ce.BlurDirectionX, e.setRenderTarget(this.renderTargetBlurBuffer2), e.clear(), this._fsQuad.render(e), this.separableBlurMaterial2.uniforms.colorTexture.value = this.renderTargetBlurBuffer2.texture, this.separableBlurMaterial2.uniforms.direction.value = Ce.BlurDirectionY, e.setRenderTarget(this.renderTargetEdgeBuffer2), e.clear(), this._fsQuad.render(e), this._fsQuad.material = this.overlayMaterial, this.overlayMaterial.uniforms.maskTexture.value = this.renderTargetMaskBuffer.texture, this.overlayMaterial.uniforms.edgeTexture1.value = this.renderTargetEdgeBuffer1.texture, this.overlayMaterial.uniforms.edgeTexture2.value = this.renderTargetEdgeBuffer2.texture, this.overlayMaterial.uniforms.patternTexture.value = this.patternTexture, this.overlayMaterial.uniforms.edgeStrength.value = this.edgeStrength, this.overlayMaterial.uniforms.edgeGlow.value = this.edgeGlow, this.overlayMaterial.uniforms.usePatternTexture.value = this.usePatternTexture, i && e.state.buffers.stencil.setTest(!0), e.setRenderTarget(n), this._fsQuad.render(e), e.setClearColor(this._oldClearColor, this.oldClearAlpha), e.autoClear = o;
1646
1646
  }
1647
1647
  this.renderToScreen && (this._fsQuad.material = this.materialCopy, this.copyUniforms.tDiffuse.value = n.texture, e.setRenderTarget(null), this._fsQuad.render(e));
1648
1648
  }
@@ -1694,7 +1694,7 @@ class be extends qe {
1694
1694
  ), this.textureMatrix.multiply(this.renderCamera.projectionMatrix), this.textureMatrix.multiply(this.renderCamera.matrixWorldInverse);
1695
1695
  }
1696
1696
  _getPrepareMaskMaterial() {
1697
- return new Ee({
1697
+ return new ke({
1698
1698
  uniforms: {
1699
1699
  depthTexture: { value: null },
1700
1700
  cameraNearFar: { value: new F(0.5, 0.5) },
@@ -1749,7 +1749,7 @@ class be extends qe {
1749
1749
  });
1750
1750
  }
1751
1751
  _getEdgeDetectionMaterial() {
1752
- return new Ee({
1752
+ return new ke({
1753
1753
  uniforms: {
1754
1754
  maskTexture: { value: null },
1755
1755
  texSize: { value: new F(0.5, 0.5) },
@@ -1788,7 +1788,7 @@ class be extends qe {
1788
1788
  });
1789
1789
  }
1790
1790
  _getSeparableBlurMaterial(e) {
1791
- return new Ee({
1791
+ return new ke({
1792
1792
  defines: {
1793
1793
  MAX_RADIUS: e
1794
1794
  },
@@ -1836,7 +1836,7 @@ class be extends qe {
1836
1836
  });
1837
1837
  }
1838
1838
  _getOverlayMaterial() {
1839
- return new Ee({
1839
+ return new ke({
1840
1840
  uniforms: {
1841
1841
  maskTexture: { value: null },
1842
1842
  edgeTexture1: { value: null },
@@ -1874,17 +1874,17 @@ class be extends qe {
1874
1874
  finalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);
1875
1875
  gl_FragColor = finalColor;
1876
1876
  }`,
1877
- blending: Zn,
1877
+ blending: Bn,
1878
1878
  depthTest: !1,
1879
1879
  depthWrite: !1,
1880
1880
  transparent: !0
1881
1881
  });
1882
1882
  }
1883
1883
  }
1884
- be.BlurDirectionX = new F(1, 0);
1885
- be.BlurDirectionY = new F(0, 1);
1884
+ Ce.BlurDirectionX = new F(1, 0);
1885
+ Ce.BlurDirectionY = new F(0, 1);
1886
1886
  const Vi = "data:image/jpeg;base64,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";
1887
- class Ji extends Be {
1887
+ class Ji extends Ze {
1888
1888
  /**
1889
1889
  * Constructs a new CSS2D object.
1890
1890
  *
@@ -1919,51 +1919,51 @@ class Qi {
1919
1919
  width: n,
1920
1920
  height: s
1921
1921
  };
1922
- }, this.render = function(m, p) {
1923
- m.matrixWorldAutoUpdate === !0 && m.updateMatrixWorld(), p.parent === null && p.matrixWorldAutoUpdate === !0 && p.updateMatrixWorld(), Ps.copy(p.matrixWorldInverse), Ls.multiplyMatrices(p.projectionMatrix, Ps), u(m, m, p), this.sortObjects && h(m);
1924
- }, this.setSize = function(m, p) {
1925
- n = m, s = p, i = n / 2, o = s / 2, l.style.width = m + "px", l.style.height = p + "px";
1922
+ }, this.render = function(g, f) {
1923
+ g.matrixWorldAutoUpdate === !0 && g.updateMatrixWorld(), f.parent === null && f.matrixWorldAutoUpdate === !0 && f.updateMatrixWorld(), Ps.copy(f.matrixWorldInverse), Ls.multiplyMatrices(f.projectionMatrix, Ps), u(g, g, f), this.sortObjects && d(g);
1924
+ }, this.setSize = function(g, f) {
1925
+ n = g, s = f, i = n / 2, o = s / 2, l.style.width = g + "px", l.style.height = f + "px";
1926
1926
  };
1927
- function A(m) {
1928
- m.isCSS2DObject && (m.element.style.display = "none");
1929
- for (let p = 0, f = m.children.length; p < f; p++)
1930
- A(m.children[p]);
1927
+ function A(g) {
1928
+ g.isCSS2DObject && (g.element.style.display = "none");
1929
+ for (let f = 0, m = g.children.length; f < m; f++)
1930
+ A(g.children[f]);
1931
1931
  }
1932
- function u(m, p, f) {
1933
- if (m.visible === !1) {
1934
- A(m);
1932
+ function u(g, f, m) {
1933
+ if (g.visible === !1) {
1934
+ A(g);
1935
1935
  return;
1936
1936
  }
1937
- if (m.isCSS2DObject) {
1938
- He.setFromMatrixPosition(m.matrixWorld), He.applyMatrix4(Ls);
1939
- const g = He.z >= -1 && He.z <= 1 && m.layers.test(f.layers) === !0, x = m.element;
1940
- x.style.display = g === !0 ? "" : "none", g === !0 && (m.onBeforeRender(t, p, f), x.style.transform = "translate(" + -100 * m.center.x + "%," + -100 * m.center.y + "%)translate(" + (He.x * i + i) + "px," + (-He.y * o + o) + "px)", x.parentNode !== l && l.appendChild(x), m.onAfterRender(t, p, f));
1941
- const I = {
1942
- distanceToCameraSquared: c(f, m)
1937
+ if (g.isCSS2DObject) {
1938
+ He.setFromMatrixPosition(g.matrixWorld), He.applyMatrix4(Ls);
1939
+ const p = He.z >= -1 && He.z <= 1 && g.layers.test(m.layers) === !0, I = g.element;
1940
+ I.style.display = p === !0 ? "" : "none", p === !0 && (g.onBeforeRender(t, f, m), I.style.transform = "translate(" + -100 * g.center.x + "%," + -100 * g.center.y + "%)translate(" + (He.x * i + i) + "px," + (-He.y * o + o) + "px)", I.parentNode !== l && l.appendChild(I), g.onAfterRender(t, f, m));
1941
+ const x = {
1942
+ distanceToCameraSquared: c(m, g)
1943
1943
  };
1944
- a.objects.set(m, I);
1944
+ a.objects.set(g, x);
1945
1945
  }
1946
- for (let g = 0, x = m.children.length; g < x; g++)
1947
- u(m.children[g], p, f);
1946
+ for (let p = 0, I = g.children.length; p < I; p++)
1947
+ u(g.children[p], f, m);
1948
1948
  }
1949
- function c(m, p) {
1950
- return Ns.setFromMatrixPosition(m.matrixWorld), Os.setFromMatrixPosition(p.matrixWorld), Ns.distanceToSquared(Os);
1949
+ function c(g, f) {
1950
+ return Ns.setFromMatrixPosition(g.matrixWorld), Os.setFromMatrixPosition(f.matrixWorld), Ns.distanceToSquared(Os);
1951
1951
  }
1952
- function d(m) {
1953
- const p = [];
1954
- return m.traverseVisible(function(f) {
1955
- f.isCSS2DObject && p.push(f);
1956
- }), p;
1952
+ function h(g) {
1953
+ const f = [];
1954
+ return g.traverseVisible(function(m) {
1955
+ m.isCSS2DObject && f.push(m);
1956
+ }), f;
1957
1957
  }
1958
- function h(m) {
1959
- const p = d(m).sort(function(g, x) {
1960
- if (g.renderOrder !== x.renderOrder)
1961
- return x.renderOrder - g.renderOrder;
1962
- const I = a.objects.get(g).distanceToCameraSquared, y = a.objects.get(x).distanceToCameraSquared;
1963
- return I - y;
1964
- }), f = p.length;
1965
- for (let g = 0, x = p.length; g < x; g++)
1966
- p[g].element.style.zIndex = f - g;
1958
+ function d(g) {
1959
+ const f = h(g).sort(function(p, I) {
1960
+ if (p.renderOrder !== I.renderOrder)
1961
+ return I.renderOrder - p.renderOrder;
1962
+ const x = a.objects.get(p).distanceToCameraSquared, y = a.objects.get(I).distanceToCameraSquared;
1963
+ return x - y;
1964
+ }), m = f.length;
1965
+ for (let p = 0, I = f.length; p < I; p++)
1966
+ f[p].element.style.zIndex = m - p;
1967
1967
  }
1968
1968
  }
1969
1969
  }
@@ -1993,7 +1993,7 @@ class dt {
1993
1993
  items: e.items || [],
1994
1994
  offsetY: e.offsetY ?? 0.1,
1995
1995
  fontSize: e.fontSize || "13px",
1996
- width: e.width || "240px",
1996
+ width: e.width || "220px",
1997
1997
  backgroundColor: e.backgroundColor || "linear-gradient(135deg, rgba(6, 16, 42, 0.55) 0%, rgba(2, 6, 18, 0.40) 100%)",
1998
1998
  textColor: e.textColor || "#ffffff",
1999
1999
  borderColor: e.borderColor || "rgba(80, 200, 255, 0.15)",
@@ -2083,10 +2083,12 @@ class dt {
2083
2083
  */
2084
2084
  attachTo(e) {
2085
2085
  this.attachedObject && this.attachedObject !== e && this.detach();
2086
- const t = new w.Box3().setFromObject(e), n = new w.Vector3();
2087
- t.getSize(n);
2088
- const s = n.y / 2 + this.options.offsetY;
2089
- this.css2dObject || (this.css2dObject = new Ji(this.container), this.css2dObject.name = `DataPanel_${e.name || e.uuid}`, this.css2dObject.center.set(0.5, 1)), this.css2dObject.position.set(0, s, 0), e.add(this.css2dObject), this.attachedObject = e;
2086
+ const t = new w.Vector3();
2087
+ e.getWorldPosition(t);
2088
+ const n = new w.Box3().setFromObject(e), s = new w.Vector3(), i = new w.Vector3();
2089
+ n.getCenter(s), n.getSize(i);
2090
+ const a = n.max.y - t.y + this.options.offsetY;
2091
+ this.css2dObject || (this.css2dObject = new Ji(this.container), this.css2dObject.name = `DataPanel_${e.name || e.uuid}`, this.css2dObject.center.set(0.5, 1)), this.css2dObject.position.set(0, a, 0), e.add(this.css2dObject), this.attachedObject = e;
2090
2092
  }
2091
2093
  /**
2092
2094
  * 从附着的物体上移除面板
@@ -2184,11 +2186,17 @@ class dt {
2184
2186
  updateOptions(e) {
2185
2187
  this.options = { ...this.options, ...e }, this.rebuildPanel();
2186
2188
  }
2187
- /** 更新面板 Y 轴偏移 */
2189
+ /** 获取面板 Y 轴偏移 */
2190
+ getOffsetY() {
2191
+ return this.options.offsetY ?? 0.1;
2192
+ }
2193
+ /** 更新面板 Y 轴偏移(使用与 attachTo 相同的位置计算逻辑) */
2188
2194
  setOffsetY(e) {
2189
2195
  if (this.options.offsetY = e, this.css2dObject && this.attachedObject) {
2190
- const t = new w.Box3().setFromObject(this.attachedObject), n = new w.Vector3();
2191
- t.getSize(n), this.css2dObject.position.set(0, n.y / 2 + e, 0);
2196
+ const t = new w.Vector3();
2197
+ this.attachedObject.getWorldPosition(t);
2198
+ const s = new w.Box3().setFromObject(this.attachedObject).max.y - t.y;
2199
+ this.css2dObject.position.set(0, s + e, 0);
2192
2200
  }
2193
2201
  }
2194
2202
  /** 获取面板宽度 */
@@ -2226,7 +2234,7 @@ function nn(r, e) {
2226
2234
  const t = Ot(r);
2227
2235
  Lt.set(t, e), t.userData._hasDataPanel = !0;
2228
2236
  }
2229
- function cs(r) {
2237
+ function Wt(r) {
2230
2238
  return Lt.get(Ot(r)) || null;
2231
2239
  }
2232
2240
  function oo(r) {
@@ -2237,7 +2245,7 @@ let U = null;
2237
2245
  function ro(r) {
2238
2246
  return U ? (U.domElement.parentNode !== r && r.appendChild(U.domElement), U) : (U = new Qi(), U.setSize(r.clientWidth, r.clientHeight), U.domElement.style.position = "absolute", U.domElement.style.top = "0", U.domElement.style.left = "0", U.domElement.style.pointerEvents = "none", r.appendChild(U.domElement), U);
2239
2247
  }
2240
- function Il() {
2248
+ function vl() {
2241
2249
  return U;
2242
2250
  }
2243
2251
  function ao(r, e) {
@@ -2273,9 +2281,9 @@ const b = {
2273
2281
  /** 当前选中的物体 */
2274
2282
  selectedObject: null
2275
2283
  };
2276
- let wt = !1, We = !1, Ce = null, Ie = null;
2277
- const ts = 16755200;
2278
- let ss = [], Oe = null, ns = null, Rt = null, ye = [];
2284
+ let wt = !1, We = !1, Ie = null, ye = null;
2285
+ const ss = 16755200;
2286
+ let ns = [], Oe = null, is = null, Rt = null, xe = [];
2279
2287
  const je = /* @__PURE__ */ new Map();
2280
2288
  let Nt, Et = null, lt = null, At = null;
2281
2289
  function co(r, e = "edit", t) {
@@ -2287,9 +2295,9 @@ function uo() {
2287
2295
  }
2288
2296
  function ho() {
2289
2297
  if (!b.renderer || !b.scene || !b.camera) return;
2290
- const r = new Bi(b.renderer);
2298
+ const r = new Zi(b.renderer);
2291
2299
  r.addPass(new Xi(b.scene, b.camera)), r.addPass(new qi());
2292
- const e = new be(
2300
+ const e = new Ce(
2293
2301
  new w.Vector2(
2294
2302
  b.container.clientWidth,
2295
2303
  b.container.clientHeight
@@ -2297,7 +2305,7 @@ function ho() {
2297
2305
  b.scene,
2298
2306
  b.camera
2299
2307
  );
2300
- e.edgeStrength = 3, e.edgeGlow = 0.5, e.edgeThickness = 1.5, e.visibleEdgeColor.set(ts), e.hiddenEdgeColor.set(ts), e.downSampleRatio = 2, r.addPass(e), Ce = r, Ie = e;
2308
+ e.edgeStrength = 3, e.edgeGlow = 0.5, e.edgeThickness = 1.5, e.visibleEdgeColor.set(ss), e.hiddenEdgeColor.set(ss), e.downSampleRatio = 2, r.addPass(e), Ie = r, ye = e;
2301
2309
  }
2302
2310
  function fo() {
2303
2311
  b.scene = new w.Scene(), b.scene.name = "sl_scene", new w.TextureLoader().load(
@@ -2391,7 +2399,7 @@ function bo() {
2391
2399
  }, 200));
2392
2400
  }), r.addEventListener("objectChange", () => {
2393
2401
  const e = b.selectedObject;
2394
- if (ns && e && ns(e), e && e.type === "DirectionalLight") {
2402
+ if (is && e && is(e), e && e.type === "DirectionalLight") {
2395
2403
  const t = e.userData.helper;
2396
2404
  t && t.update && t.update();
2397
2405
  }
@@ -2403,7 +2411,7 @@ function Co() {
2403
2411
  }
2404
2412
  function rn() {
2405
2413
  var e, t;
2406
- Et = requestAnimationFrame(rn), ut.update(), (e = b.orbitControls) == null || e.update(), b.mode === "run" && Ce && b.scene && b.camera ? Ce.render() : (t = b.renderer) == null || t.render(b.scene, b.camera), b.scene && b.camera && ao(b.scene, b.camera), b.scene && b.scene.traverse((n) => {
2414
+ Et = requestAnimationFrame(rn), ut.update(), (e = b.orbitControls) == null || e.update(), b.mode === "run" && Ie && b.scene && b.camera ? Ie.render() : (t = b.renderer) == null || t.render(b.scene, b.camera), b.scene && b.camera && ao(b.scene, b.camera), b.scene && b.scene.traverse((n) => {
2407
2415
  if (n.userData.isWater && n.type === "Mesh") {
2408
2416
  const s = n, i = s.material;
2409
2417
  if (i.normalMap) {
@@ -2416,7 +2424,7 @@ function rn() {
2416
2424
  function Io() {
2417
2425
  if (!b.container || !b.camera || !b.renderer) return;
2418
2426
  const r = b.container.clientWidth, e = b.container.clientHeight;
2419
- r === 0 || e === 0 || (b.camera.aspect = r / e, b.camera.updateProjectionMatrix(), b.renderer.setSize(r, e), Ce && Ce.setSize(r, e), Ie && Ie.resolution.set(r, e), lo(r, e));
2427
+ r === 0 || e === 0 || (b.camera.aspect = r / e, b.camera.updateProjectionMatrix(), b.renderer.setSize(r, e), Ie && Ie.setSize(r, e), ye && ye.resolution.set(r, e), lo(r, e));
2420
2428
  }
2421
2429
  function us(r) {
2422
2430
  b.selectedObject !== r && (b.selectedObject && b.transformControls.detach(), b.selectedObject = r, b.transformControls.attach(r), b.transformControls.setMode(b.transformControlsMode), b.transformControls.showX = !0, b.transformControls.showY = !0, b.transformControls.showZ = !0, an(r), console.log("选中", b.selectedObject), Oe == null || Oe(r));
@@ -2425,7 +2433,7 @@ let _ = null;
2425
2433
  function yo(r) {
2426
2434
  _ = r;
2427
2435
  }
2428
- function Gt(r) {
2436
+ function Kt(r) {
2429
2437
  _ == null || _(r);
2430
2438
  }
2431
2439
  function xo(r) {
@@ -2436,27 +2444,27 @@ function an(r) {
2436
2444
  ds(), r.traverse((t) => {
2437
2445
  if (t.isMesh) {
2438
2446
  const n = t, s = new w.EdgesGeometry(n.geometry), i = new w.LineBasicMaterial({
2439
- color: ts,
2447
+ color: ss,
2440
2448
  depthTest: !0
2441
2449
  }), o = new w.LineSegments(s, i);
2442
- t.add(o), ss.push(o);
2450
+ t.add(o), ns.push(o);
2443
2451
  }
2444
2452
  });
2445
2453
  else {
2446
- if (!Ie) return;
2454
+ if (!ye) return;
2447
2455
  const t = [];
2448
2456
  r.traverse((n) => {
2449
2457
  n.isMesh && t.push(n);
2450
- }), Ie.selectedObjects = t;
2458
+ }), ye.selectedObjects = t;
2451
2459
  }
2452
2460
  }
2453
2461
  function ds() {
2454
2462
  if (b.mode === "edit") {
2455
- for (const r of ss)
2463
+ for (const r of ns)
2456
2464
  r.parent && r.parent.remove(r), r.geometry.dispose(), r.material.dispose();
2457
- ss = [];
2465
+ ns = [];
2458
2466
  } else
2459
- Ie && (Ie.selectedObjects = []);
2467
+ ye && (ye.selectedObjects = []);
2460
2468
  }
2461
2469
  function hs() {
2462
2470
  b.selectedObject && (ds(), b.transformControls.detach(), b.selectedObject = null, Oe == null || Oe(null));
@@ -2544,13 +2552,13 @@ function To(r, e = 500) {
2544
2552
  tz: n.z
2545
2553
  },
2546
2554
  e
2547
- ).easing(ut.Easing.Quadratic.InOut).onUpdate((d) => {
2548
- b.camera.position.set(d.x, d.y, d.z), b.orbitControls.target.set(d.tx, d.ty, d.tz), b.orbitControls.update();
2555
+ ).easing(ut.Easing.Quadratic.InOut).onUpdate((h) => {
2556
+ b.camera.position.set(h.x, h.y, h.z), b.orbitControls.target.set(h.tx, h.ty, h.tz), b.orbitControls.update();
2549
2557
  }).start();
2550
- } catch (d) {
2558
+ } catch (h) {
2551
2559
  console.error(
2552
2560
  "[focusOnObject] TWEEN 动画创建失败,请检查 @tweenjs/tween.js 是否已正确安装且版本兼容(^23.1.3):",
2553
- d
2561
+ h
2554
2562
  );
2555
2563
  }
2556
2564
  }
@@ -2578,121 +2586,122 @@ function Eo(r) {
2578
2586
  });
2579
2587
  }
2580
2588
  function Xe(r, e = !1) {
2581
- b.scene.add(r), r.userData.isMovable && (Lo(r), Wt()), e && b.mode === "edit" && us(r);
2589
+ b.scene.add(r), r.userData.isMovable && (Lo(r), jt()), e && b.mode === "edit" && us(r);
2582
2590
  }
2583
2591
  function ko(r) {
2584
- b.selectedObject === r && hs(), Eo(r), wo(r), r.userData.helper && b.scene.remove(r.userData.helper), r.parent ? r.parent.remove(r) : b.scene.remove(r), No(r), Wt();
2592
+ b.selectedObject === r && hs(), Eo(r), wo(r), r.userData.helper && b.scene.remove(r.userData.helper), r.parent ? r.parent.remove(r) : b.scene.remove(r), No(r), jt();
2585
2593
  }
2586
2594
  function Po(r) {
2587
2595
  const e = b.scene.getObjectByProperty("uuid", r);
2588
2596
  e && ko(e);
2589
2597
  }
2590
2598
  function Lo(r) {
2591
- r.userData.isMovable && r.parent === b.scene && (ye.includes(r) || ye.push(r));
2599
+ r.userData.isMovable && r.parent === b.scene && (xe.includes(r) || xe.push(r));
2592
2600
  }
2593
2601
  function No(r) {
2594
- const e = ye.indexOf(r);
2595
- e !== -1 && ye.splice(e, 1);
2602
+ const e = xe.indexOf(r);
2603
+ e !== -1 && xe.splice(e, 1);
2596
2604
  }
2597
2605
  function Oo() {
2598
2606
  const r = [];
2599
2607
  b.scene.children.forEach((e) => {
2600
2608
  e.userData.isMovable && r.push(e);
2601
- }), ye = r, Wt();
2609
+ }), xe = r, jt();
2602
2610
  }
2603
- function Wt() {
2604
- Rt == null || Rt([...ye]);
2611
+ function jt() {
2612
+ Rt == null || Rt([...xe]);
2605
2613
  }
2606
2614
  function Do(r) {
2607
2615
  Oe = r;
2608
2616
  }
2609
2617
  function Wo(r) {
2610
- ns = r;
2618
+ is = r;
2611
2619
  }
2612
2620
  function jo(r) {
2613
2621
  Rt = r;
2614
2622
  }
2615
2623
  function Fo() {
2616
- return ye;
2624
+ return xe;
2617
2625
  }
2618
2626
  function Uo() {
2619
2627
  return b.selectedObject;
2620
2628
  }
2621
- function yl(r, e, t) {
2629
+ function Sl(r, e, t) {
2622
2630
  if (!b.scene) return;
2623
2631
  const n = je.get(r);
2624
2632
  if (n) {
2625
- const s = cs(n);
2633
+ const s = Wt(n);
2626
2634
  s && s.updateItemByCode(e, t);
2627
2635
  }
2628
2636
  }
2629
- function xl() {
2637
+ function Tl() {
2630
2638
  return b.scene;
2631
2639
  }
2632
2640
  function Ho() {
2633
2641
  return b.camera;
2634
2642
  }
2635
- function vl() {
2643
+ function Ml() {
2636
2644
  return b.renderer;
2637
2645
  }
2638
2646
  async function zo() {
2639
2647
  var A, u, c;
2640
- _ == null || _(!0), await new Promise((d) => setTimeout(d, 50)), hs();
2648
+ _ == null || _(!0), await new Promise((h) => setTimeout(h, 50)), hs();
2641
2649
  const r = b.scene;
2642
2650
  if (!r)
2643
2651
  return _ == null || _(!1), "{}";
2644
2652
  const e = [], t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
2645
- r.traverse((d) => {
2646
- var h;
2647
- if (d.userData.type === "lightHelper" && e.push(d), d.type === "DirectionalLight" && d.userData.helper && (t.set(d, d.userData.helper), d.userData.helper = void 0), d.name && d.name.startsWith("DataPanel_")) {
2648
- const m = d;
2649
- if (m.element) {
2650
- const p = m.element.querySelector(
2653
+ r.traverse((h) => {
2654
+ var d;
2655
+ if (h.userData.type === "lightHelper" && e.push(h), h.type === "DirectionalLight" && h.userData.helper && (t.set(h, h.userData.helper), h.userData.helper = void 0), h.name && h.name.startsWith("DataPanel_")) {
2656
+ const g = h;
2657
+ if (g.element) {
2658
+ const f = g.element.querySelector(
2651
2659
  "[data-panel-title]"
2652
- ), f = [];
2653
- if (m.element.querySelectorAll(
2660
+ ), m = [];
2661
+ if (g.element.querySelectorAll(
2654
2662
  ".sl-css2d-data-panel-item"
2655
- ).forEach((x) => {
2656
- var S, M, L;
2657
- const I = x.querySelector(".item-label"), y = x.querySelector(".item-value");
2658
- if (I && y) {
2659
- const Q = (I.textContent || "").trim(), $ = ((M = (S = y.childNodes[0]) == null ? void 0 : S.textContent) == null ? void 0 : M.trim()) || "", Y = y.querySelector(
2663
+ ).forEach((I) => {
2664
+ var v, M, L;
2665
+ const x = I.querySelector(".item-label"), y = I.querySelector(".item-value");
2666
+ if (x && y) {
2667
+ const Q = (x.textContent || "").trim(), $ = ((M = (v = y.childNodes[0]) == null ? void 0 : v.textContent) == null ? void 0 : M.trim()) || "", Y = y.querySelector(
2660
2668
  "span"
2661
- ), Se = Y ? (Y.textContent || "").trim() : void 0, jt = ((L = x.getAttribute("data-item-code")) == null ? void 0 : L.trim()) || void 0;
2662
- f.push({ label: Q, value: $, unit: Se, code: jt });
2669
+ ), Te = Y ? (Y.textContent || "").trim() : void 0, Ft = ((L = I.getAttribute("data-item-code")) == null ? void 0 : L.trim()) || void 0;
2670
+ m.push({ label: Q, value: $, unit: Te, code: Ft });
2663
2671
  }
2664
- }), d.parent) {
2665
- const x = m.element.style.width || "", I = m.element.style.fontSize || "";
2672
+ }), h.parent) {
2673
+ const I = g.element.style.width || "", x = g.element.style.fontSize || "", y = Wt(h.parent), v = y ? y.getOffsetY() : 0.1;
2666
2674
  n.set(
2667
- d.parent.userData.id ? d.parent.userData.id : d.parent.uuid,
2675
+ h.parent.userData.id ? h.parent.userData.id : h.parent.uuid,
2668
2676
  {
2669
- title: ((h = p == null ? void 0 : p.textContent) == null ? void 0 : h.trim()) || "",
2670
- items: f,
2671
- width: x,
2672
- fontSize: I
2677
+ title: ((d = f == null ? void 0 : f.textContent) == null ? void 0 : d.trim()) || "",
2678
+ items: m,
2679
+ width: I,
2680
+ fontSize: x,
2681
+ offsetY: v
2673
2682
  }
2674
2683
  );
2675
2684
  }
2676
2685
  }
2677
2686
  }
2678
- }), e.forEach((d) => r.remove(d));
2687
+ }), e.forEach((h) => r.remove(h));
2679
2688
  const s = r.clone();
2680
2689
  s.children = s.children.filter(
2681
- (d) => d.userData.type !== "initFloor"
2682
- ), s.traverse((d) => {
2683
- d.name && d.name.startsWith("DataPanel_") && d.parent && d.parent.remove(d);
2690
+ (h) => h.userData.type !== "initFloor"
2691
+ ), s.traverse((h) => {
2692
+ h.name && h.name.startsWith("DataPanel_") && h.parent && h.parent.remove(h);
2684
2693
  });
2685
2694
  const i = s.toJSON();
2686
- e.forEach((d) => r.add(d)), t.forEach((d, h) => {
2687
- h.userData.helper = d;
2695
+ e.forEach((h) => r.add(h)), t.forEach((h, d) => {
2696
+ d.userData.helper = h;
2688
2697
  });
2689
2698
  const o = {
2690
2699
  position: (A = b.camera) == null ? void 0 : A.position.toArray(),
2691
2700
  rotation: (u = b.camera) == null ? void 0 : u.rotation.toArray(),
2692
2701
  target: ((c = b.orbitControls) == null ? void 0 : c.target.toArray()) || [0, 0, 0]
2693
2702
  }, a = {};
2694
- n.forEach((d, h) => {
2695
- a[h] = d;
2703
+ n.forEach((h, d) => {
2704
+ a[d] = h;
2696
2705
  });
2697
2706
  const l = JSON.stringify({
2698
2707
  scene: i,
@@ -2709,19 +2718,19 @@ function Go(r, e = "edit", t) {
2709
2718
  const u = A.userData.id || A.uuid, c = t[u];
2710
2719
  if (c && A.userData.isMovable) {
2711
2720
  Mo(A);
2712
- const d = new dt({
2721
+ const h = new dt({
2713
2722
  title: c.title,
2714
2723
  items: c.items
2715
2724
  });
2716
- d.attachTo(A), d.visible = !1, c.width && d.setWidth(c.width), c.fontSize && d.setFontSize(c.fontSize), nn(A, d);
2725
+ h.attachTo(A), h.visible = !1, c.width && h.setWidth(c.width), c.fontSize && h.setFontSize(c.fontSize), c.offsetY !== void 0 && h.setOffsetY(c.offsetY), nn(A, h);
2717
2726
  }
2718
2727
  })), e === "edit" && ((l = b.scene) == null || l.traverse((A) => {
2719
2728
  var u;
2720
2729
  if (A.type === "DirectionalLight") {
2721
2730
  const c = A;
2722
2731
  if (!c.userData.helper) {
2723
- const d = new w.DirectionalLightHelper(c, 1);
2724
- d.userData.type = "lightHelper", c.userData.helper = d, (u = b.scene) == null || u.add(d);
2732
+ const h = new w.DirectionalLightHelper(c, 1);
2733
+ h.userData.type = "lightHelper", c.userData.helper = h, (u = b.scene) == null || u.add(h);
2725
2734
  }
2726
2735
  }
2727
2736
  }));
@@ -2739,9 +2748,9 @@ function An(r) {
2739
2748
  An(t);
2740
2749
  }
2741
2750
  function Ko() {
2742
- Et !== null && (cancelAnimationFrame(Et), Et = null), lt && b.container && (b.container.removeEventListener("click", lt), lt = null), At && (window.removeEventListener("resize", At), At = null), b.orbitControls && (b.orbitControls.dispose(), b.orbitControls = null), b.transformControls && (b.transformControls.dispose(), b.transformControls = null), Ce && (Ce.dispose(), Ce = null, Ie = null), b.scene && (An(b.scene), b.scene = null), b.renderer && (b.renderer.dispose(), b.renderer.domElement && b.container && b.container.removeChild(b.renderer.domElement), b.renderer = null), Ao(), b.camera = null, b.gridHelper = null, b.selectedObject = null, b.container = null, b.mode = "", ye = [], je.clear(), Wt(), wt = !1, We = !1;
2751
+ Et !== null && (cancelAnimationFrame(Et), Et = null), lt && b.container && (b.container.removeEventListener("click", lt), lt = null), At && (window.removeEventListener("resize", At), At = null), b.orbitControls && (b.orbitControls.dispose(), b.orbitControls = null), b.transformControls && (b.transformControls.dispose(), b.transformControls = null), Ie && (Ie.dispose(), Ie = null, ye = null), b.scene && (An(b.scene), b.scene = null), b.renderer && (b.renderer.dispose(), b.renderer.domElement && b.container && b.container.removeChild(b.renderer.domElement), b.renderer = null), Ao(), b.camera = null, b.gridHelper = null, b.selectedObject = null, b.container = null, b.mode = "", xe = [], je.clear(), jt(), wt = !1, We = !1;
2743
2752
  }
2744
- const Zo = /^[og]\s*(.+)?/, Bo = /^mtllib /, Xo = /^usemtl /, qo = /^usemap /, Ds = /\s+/, Ws = new T(), Kt = new T(), js = new T(), Fs = new T(), te = new T(), vt = new Z();
2753
+ const Bo = /^[og]\s*(.+)?/, Zo = /^mtllib /, Xo = /^usemtl /, qo = /^usemap /, Ds = /\s+/, Ws = new T(), Bt = new T(), js = new T(), Fs = new T(), te = new T(), vt = new B();
2745
2754
  function Vo() {
2746
2755
  const r = {
2747
2756
  objects: [],
@@ -2851,7 +2860,7 @@ function Vo() {
2851
2860
  },
2852
2861
  addFaceNormal: function(e, t, n) {
2853
2862
  const s = this.vertices, i = this.object.geometry.normals;
2854
- Ws.fromArray(s, e), Kt.fromArray(s, t), js.fromArray(s, n), te.subVectors(js, Kt), Fs.subVectors(Ws, Kt), te.cross(Fs), te.normalize(), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z);
2863
+ Ws.fromArray(s, e), Bt.fromArray(s, t), js.fromArray(s, n), te.subVectors(js, Bt), Fs.subVectors(Ws, Bt), te.cross(Fs), te.normalize(), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z), i.push(te.x, te.y, te.z);
2855
2864
  },
2856
2865
  addColor: function(e, t, n) {
2857
2866
  const s = this.colors, i = this.object.geometry.colors;
@@ -2871,15 +2880,15 @@ function Vo() {
2871
2880
  },
2872
2881
  addFace: function(e, t, n, s, i, o, a, l, A) {
2873
2882
  const u = this.vertices.length;
2874
- let c = this.parseVertexIndex(e, u), d = this.parseVertexIndex(t, u), h = this.parseVertexIndex(n, u);
2875
- if (this.addVertex(c, d, h), this.addColor(c, d, h), a !== void 0 && a !== "") {
2876
- const m = this.normals.length;
2877
- c = this.parseNormalIndex(a, m), d = this.parseNormalIndex(l, m), h = this.parseNormalIndex(A, m), this.addNormal(c, d, h);
2883
+ let c = this.parseVertexIndex(e, u), h = this.parseVertexIndex(t, u), d = this.parseVertexIndex(n, u);
2884
+ if (this.addVertex(c, h, d), this.addColor(c, h, d), a !== void 0 && a !== "") {
2885
+ const g = this.normals.length;
2886
+ c = this.parseNormalIndex(a, g), h = this.parseNormalIndex(l, g), d = this.parseNormalIndex(A, g), this.addNormal(c, h, d);
2878
2887
  } else
2879
- this.addFaceNormal(c, d, h);
2888
+ this.addFaceNormal(c, h, d);
2880
2889
  if (s !== void 0 && s !== "") {
2881
- const m = this.uvs.length;
2882
- c = this.parseUVIndex(s, m), d = this.parseUVIndex(i, m), h = this.parseUVIndex(o, m), this.addUV(c, d, h), this.object.geometry.hasUVIndices = !0;
2890
+ const g = this.uvs.length;
2891
+ c = this.parseUVIndex(s, g), h = this.parseUVIndex(i, g), d = this.parseUVIndex(o, g), this.addUV(c, h, d), this.object.geometry.hasUVIndices = !0;
2883
2892
  } else
2884
2893
  this.addDefaultUV();
2885
2894
  },
@@ -2902,7 +2911,7 @@ function Vo() {
2902
2911
  };
2903
2912
  return r.startObject("", !1), r;
2904
2913
  }
2905
- class Jo extends as {
2914
+ class Jo extends ls {
2906
2915
  /**
2907
2916
  * Constructs a new OBJ loader.
2908
2917
  *
@@ -2989,57 +2998,57 @@ class Jo extends as {
2989
2998
  break;
2990
2999
  }
2991
3000
  } else if (u === "f") {
2992
- const d = A.slice(1).trim().split(Ds), h = [];
2993
- for (let p = 0, f = d.length; p < f; p++) {
2994
- const g = d[p];
2995
- if (g.length > 0) {
2996
- const x = g.split("/");
2997
- h.push(x);
3001
+ const h = A.slice(1).trim().split(Ds), d = [];
3002
+ for (let f = 0, m = h.length; f < m; f++) {
3003
+ const p = h[f];
3004
+ if (p.length > 0) {
3005
+ const I = p.split("/");
3006
+ d.push(I);
2998
3007
  }
2999
3008
  }
3000
- const m = h[0];
3001
- for (let p = 1, f = h.length - 1; p < f; p++) {
3002
- const g = h[p], x = h[p + 1];
3009
+ const g = d[0];
3010
+ for (let f = 1, m = d.length - 1; f < m; f++) {
3011
+ const p = d[f], I = d[f + 1];
3003
3012
  t.addFace(
3004
- m[0],
3005
3013
  g[0],
3006
- x[0],
3007
- m[1],
3014
+ p[0],
3015
+ I[0],
3008
3016
  g[1],
3009
- x[1],
3010
- m[2],
3017
+ p[1],
3018
+ I[1],
3011
3019
  g[2],
3012
- x[2]
3020
+ p[2],
3021
+ I[2]
3013
3022
  );
3014
3023
  }
3015
3024
  } else if (u === "l") {
3016
3025
  const c = A.substring(1).trim().split(" ");
3017
- let d = [];
3018
- const h = [];
3026
+ let h = [];
3027
+ const d = [];
3019
3028
  if (A.indexOf("/") === -1)
3020
- d = c;
3029
+ h = c;
3021
3030
  else
3022
- for (let m = 0, p = c.length; m < p; m++) {
3023
- const f = c[m].split("/");
3024
- f[0] !== "" && d.push(f[0]), f[1] !== "" && h.push(f[1]);
3031
+ for (let g = 0, f = c.length; g < f; g++) {
3032
+ const m = c[g].split("/");
3033
+ m[0] !== "" && h.push(m[0]), m[1] !== "" && d.push(m[1]);
3025
3034
  }
3026
- t.addLineGeometry(d, h);
3035
+ t.addLineGeometry(h, d);
3027
3036
  } else if (u === "p") {
3028
- const d = A.slice(1).trim().split(" ");
3029
- t.addPointGeometry(d);
3030
- } else if ((s = Zo.exec(A)) !== null) {
3037
+ const h = A.slice(1).trim().split(" ");
3038
+ t.addPointGeometry(h);
3039
+ } else if ((s = Bo.exec(A)) !== null) {
3031
3040
  const c = (" " + s[0].slice(1).trim()).slice(1);
3032
3041
  t.startObject(c);
3033
3042
  } else if (Xo.test(A))
3034
3043
  t.object.startMaterial(A.substring(7).trim(), t.materialLibraries);
3035
- else if (Bo.test(A))
3044
+ else if (Zo.test(A))
3036
3045
  t.materialLibraries.push(A.substring(7).trim());
3037
3046
  else if (qo.test(A))
3038
3047
  console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');
3039
3048
  else if (u === "s") {
3040
3049
  if (s = A.split(" "), s.length > 1) {
3041
- const d = s[1].trim().toLowerCase();
3042
- t.object.smooth = d !== "0" && d !== "off";
3050
+ const h = s[1].trim().toLowerCase();
3051
+ t.object.smooth = h !== "0" && h !== "off";
3043
3052
  } else
3044
3053
  t.object.smooth = !0;
3045
3054
  const c = t.object.currentMaterial();
@@ -3053,36 +3062,36 @@ class Jo extends as {
3053
3062
  const i = new St();
3054
3063
  if (i.materialLibraries = [].concat(t.materialLibraries), !(t.objects.length === 1 && t.objects[0].geometry.vertices.length === 0) === !0)
3055
3064
  for (let a = 0, l = t.objects.length; a < l; a++) {
3056
- const A = t.objects[a], u = A.geometry, c = A.materials, d = u.type === "Line", h = u.type === "Points";
3057
- let m = !1;
3065
+ const A = t.objects[a], u = A.geometry, c = A.materials, h = u.type === "Line", d = u.type === "Points";
3066
+ let g = !1;
3058
3067
  if (u.vertices.length === 0) continue;
3059
- const p = new De();
3060
- p.setAttribute("position", new le(u.vertices, 3)), u.normals.length > 0 && p.setAttribute("normal", new le(u.normals, 3)), u.colors.length > 0 && (m = !0, p.setAttribute("color", new le(u.colors, 3))), u.hasUVIndices === !0 && p.setAttribute("uv", new le(u.uvs, 2));
3061
- const f = [];
3062
- for (let x = 0, I = c.length; x < I; x++) {
3063
- const y = c[x], S = y.name + "_" + y.smooth + "_" + m;
3064
- let M = t.materials[S];
3068
+ const f = new De();
3069
+ f.setAttribute("position", new le(u.vertices, 3)), u.normals.length > 0 && f.setAttribute("normal", new le(u.normals, 3)), u.colors.length > 0 && (g = !0, f.setAttribute("color", new le(u.colors, 3))), u.hasUVIndices === !0 && f.setAttribute("uv", new le(u.uvs, 2));
3070
+ const m = [];
3071
+ for (let I = 0, x = c.length; I < x; I++) {
3072
+ const y = c[I], v = y.name + "_" + y.smooth + "_" + g;
3073
+ let M = t.materials[v];
3065
3074
  if (this.materials !== null) {
3066
- if (M = this.materials.create(y.name), d && M && !(M instanceof it)) {
3075
+ if (M = this.materials.create(y.name), h && M && !(M instanceof it)) {
3067
3076
  const L = new it();
3068
3077
  ot.prototype.copy.call(L, M), L.color.copy(M.color), M = L;
3069
- } else if (h && M && !(M instanceof et)) {
3078
+ } else if (d && M && !(M instanceof et)) {
3070
3079
  const L = new et({ size: 10, sizeAttenuation: !1 });
3071
3080
  ot.prototype.copy.call(L, M), L.color.copy(M.color), L.map = M.map, M = L;
3072
3081
  }
3073
3082
  }
3074
- M === void 0 && (d ? M = new it() : h ? M = new et({ size: 1, sizeAttenuation: !1 }) : M = new Bn(), M.name = y.name, M.flatShading = !y.smooth, M.vertexColors = m, t.materials[S] = M), f.push(M);
3083
+ M === void 0 && (h ? M = new it() : d ? M = new et({ size: 1, sizeAttenuation: !1 }) : M = new Zn(), M.name = y.name, M.flatShading = !y.smooth, M.vertexColors = g, t.materials[v] = M), m.push(M);
3075
3084
  }
3076
- let g;
3077
- if (f.length > 1) {
3078
- for (let x = 0, I = c.length; x < I; x++) {
3079
- const y = c[x];
3080
- p.addGroup(y.groupStart, y.groupCount, x);
3085
+ let p;
3086
+ if (m.length > 1) {
3087
+ for (let I = 0, x = c.length; I < x; I++) {
3088
+ const y = c[I];
3089
+ f.addGroup(y.groupStart, y.groupCount, I);
3081
3090
  }
3082
- d ? g = new Yt(p, f) : h ? g = new Tt(p, f) : g = new v(p, f);
3091
+ h ? p = new _t(f, m) : d ? p = new Tt(f, m) : p = new S(f, m);
3083
3092
  } else
3084
- d ? g = new Yt(p, f[0]) : h ? g = new Tt(p, f[0]) : g = new v(p, f[0]);
3085
- g.name = A.name, i.add(g);
3093
+ h ? p = new _t(f, m[0]) : d ? p = new Tt(f, m[0]) : p = new S(f, m[0]);
3094
+ p.name = A.name, i.add(p);
3086
3095
  }
3087
3096
  else if (t.vertices.length > 0) {
3088
3097
  const a = new et({ size: 1, sizeAttenuation: !1 }), l = new De();
@@ -3096,7 +3105,7 @@ class Jo extends as {
3096
3105
  function Us(r, e) {
3097
3106
  if (e === Xn)
3098
3107
  return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."), r;
3099
- if (e === _t || e === Vs) {
3108
+ if (e === $t || e === Vs) {
3100
3109
  let t = r.getIndex();
3101
3110
  if (t === null) {
3102
3111
  const o = [], a = r.getAttribute("position");
@@ -3108,7 +3117,7 @@ function Us(r, e) {
3108
3117
  return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."), r;
3109
3118
  }
3110
3119
  const n = t.count - 2, s = [];
3111
- if (e === _t)
3120
+ if (e === $t)
3112
3121
  for (let o = 1; o <= n; o++)
3113
3122
  s.push(t.getX(0)), s.push(t.getX(o)), s.push(t.getX(o + 1));
3114
3123
  else
@@ -3137,7 +3146,7 @@ function cn(r, e, t) {
3137
3146
  for (let n = 0; n < r.children.length; n++)
3138
3147
  cn(r.children[n], e.children[n], t);
3139
3148
  }
3140
- class Yo extends as {
3149
+ class Yo extends ls {
3141
3150
  /**
3142
3151
  * Constructs a new glTF loader.
3143
3152
  *
@@ -3310,7 +3319,7 @@ class Yo extends as {
3310
3319
  }
3311
3320
  if (i.extensionsUsed)
3312
3321
  for (let u = 0; u < i.extensionsUsed.length; ++u) {
3313
- const c = i.extensionsUsed[u], d = i.extensionsRequired || [];
3322
+ const c = i.extensionsUsed[u], h = i.extensionsRequired || [];
3314
3323
  switch (c) {
3315
3324
  case E.KHR_MATERIALS_UNLIT:
3316
3325
  o[c] = new er();
@@ -3325,7 +3334,7 @@ class Yo extends as {
3325
3334
  o[c] = new Cr();
3326
3335
  break;
3327
3336
  default:
3328
- d.indexOf(c) >= 0 && a[c] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + c + '".');
3337
+ h.indexOf(c) >= 0 && a[c] === void 0 && console.warn('THREE.GLTFLoader: Unknown extension "' + c + '".');
3329
3338
  }
3330
3339
  }
3331
3340
  A.setExtensions(o), A.setPlugins(a), A.parse(n, s);
@@ -3408,7 +3417,7 @@ class $o {
3408
3417
  if (s) return s;
3409
3418
  const i = t.json, l = ((i.extensions && i.extensions[this.name] || {}).lights || [])[e];
3410
3419
  let A;
3411
- const u = new Z(16777215);
3420
+ const u = new B(16777215);
3412
3421
  l.color !== void 0 && u.setRGB(l.color[0], l.color[1], l.color[2], Ae);
3413
3422
  const c = l.range !== void 0 ? l.range : 0;
3414
3423
  switch (l.type) {
@@ -3446,7 +3455,7 @@ class er {
3446
3455
  }
3447
3456
  extendParams(e, t, n) {
3448
3457
  const s = [];
3449
- e.color = new Z(1, 1, 1), e.opacity = 1;
3458
+ e.color = new B(1, 1, 1), e.opacity = 1;
3450
3459
  const i = t.pbrMetallicRoughness;
3451
3460
  if (i) {
3452
3461
  if (Array.isArray(i.baseColorFactor)) {
@@ -3522,7 +3531,7 @@ class or {
3522
3531
  const n = H(this.parser, e, this.name);
3523
3532
  if (n === null) return Promise.resolve();
3524
3533
  const s = [];
3525
- if (t.sheenColor = new Z(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1, n.sheenColorFactor !== void 0) {
3534
+ if (t.sheenColor = new B(0, 0, 0), t.sheenRoughness = 0, t.sheen = 1, n.sheenColorFactor !== void 0) {
3526
3535
  const i = n.sheenColorFactor;
3527
3536
  t.sheenColor.setRGB(i[0], i[1], i[2], Ae);
3528
3537
  }
@@ -3556,7 +3565,7 @@ class ar {
3556
3565
  const s = [];
3557
3566
  t.thickness = n.thicknessFactor !== void 0 ? n.thicknessFactor : 0, n.thicknessTexture !== void 0 && s.push(this.parser.assignTexture(t, "thicknessMap", n.thicknessTexture)), t.attenuationDistance = n.attenuationDistance || 1 / 0;
3558
3567
  const i = n.attenuationColor || [1, 1, 1];
3559
- return t.attenuationColor = new Z().setRGB(i[0], i[1], i[2], Ae), Promise.all(s);
3568
+ return t.attenuationColor = new B().setRGB(i[0], i[1], i[2], Ae), Promise.all(s);
3560
3569
  }
3561
3570
  }
3562
3571
  class lr {
@@ -3584,7 +3593,7 @@ class Ar {
3584
3593
  const s = [];
3585
3594
  t.specularIntensity = n.specularFactor !== void 0 ? n.specularFactor : 1, n.specularTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularIntensityMap", n.specularTexture));
3586
3595
  const i = n.specularColorFactor || [1, 1, 1];
3587
- return t.specularColor = new Z().setRGB(i[0], i[1], i[2], Ae), n.specularColorTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularColorMap", n.specularColorTexture, he)), Promise.all(s);
3596
+ return t.specularColor = new B().setRGB(i[0], i[1], i[2], Ae), n.specularColorTexture !== void 0 && s.push(this.parser.assignTexture(t, "specularColorMap", n.specularColorTexture, he)), Promise.all(s);
3588
3597
  }
3589
3598
  }
3590
3599
  class cr {
@@ -3680,12 +3689,12 @@ class Hs {
3680
3689
  return null;
3681
3690
  }
3682
3691
  return i.then(function(a) {
3683
- const l = s.byteOffset || 0, A = s.byteLength || 0, u = s.count, c = s.byteStride, d = new Uint8Array(a, l, A);
3684
- return o.decodeGltfBufferAsync ? o.decodeGltfBufferAsync(u, c, d, s.mode, s.filter).then(function(h) {
3685
- return h.buffer;
3692
+ const l = s.byteOffset || 0, A = s.byteLength || 0, u = s.count, c = s.byteStride, h = new Uint8Array(a, l, A);
3693
+ return o.decodeGltfBufferAsync ? o.decodeGltfBufferAsync(u, c, h, s.mode, s.filter).then(function(d) {
3694
+ return d.buffer;
3686
3695
  }) : o.ready.then(function() {
3687
- const h = new ArrayBuffer(u * c);
3688
- return o.decodeGltfBuffer(new Uint8Array(h), u, c, d, s.mode, s.filter), h;
3696
+ const d = new ArrayBuffer(u * c);
3697
+ return o.decodeGltfBuffer(new Uint8Array(d), u, c, h, s.mode, s.filter), d;
3689
3698
  });
3690
3699
  });
3691
3700
  } else
@@ -3708,19 +3717,19 @@ class pr {
3708
3717
  for (const A in o)
3709
3718
  a.push(this.parser.getDependency("accessor", o[A]).then((u) => (l[A] = u, l[A])));
3710
3719
  return a.length < 1 ? null : (a.push(this.parser.createNodeMesh(e)), Promise.all(a).then((A) => {
3711
- const u = A.pop(), c = u.isGroup ? u.children : [u], d = A[0].count, h = [];
3712
- for (const m of c) {
3713
- const p = new fe(), f = new T(), g = new J(), x = new T(1, 1, 1), I = new Qn(m.geometry, m.material, d);
3714
- for (let y = 0; y < d; y++)
3715
- l.TRANSLATION && f.fromBufferAttribute(l.TRANSLATION, y), l.ROTATION && g.fromBufferAttribute(l.ROTATION, y), l.SCALE && x.fromBufferAttribute(l.SCALE, y), I.setMatrixAt(y, p.compose(f, g, x));
3720
+ const u = A.pop(), c = u.isGroup ? u.children : [u], h = A[0].count, d = [];
3721
+ for (const g of c) {
3722
+ const f = new fe(), m = new T(), p = new J(), I = new T(1, 1, 1), x = new Qn(g.geometry, g.material, h);
3723
+ for (let y = 0; y < h; y++)
3724
+ l.TRANSLATION && m.fromBufferAttribute(l.TRANSLATION, y), l.ROTATION && p.fromBufferAttribute(l.ROTATION, y), l.SCALE && I.fromBufferAttribute(l.SCALE, y), x.setMatrixAt(y, f.compose(m, p, I));
3716
3725
  for (const y in l)
3717
3726
  if (y === "_COLOR_0") {
3718
- const S = l[y];
3719
- I.instanceColor = new Yn(S.array, S.itemSize, S.normalized);
3720
- } else y !== "TRANSLATION" && y !== "ROTATION" && y !== "SCALE" && m.geometry.setAttribute(y, l[y]);
3721
- Be.prototype.copy.call(I, m), this.parser.assignFinalMaterial(I), h.push(I);
3727
+ const v = l[y];
3728
+ x.instanceColor = new Yn(v.array, v.itemSize, v.normalized);
3729
+ } else y !== "TRANSLATION" && y !== "ROTATION" && y !== "SCALE" && g.geometry.setAttribute(y, l[y]);
3730
+ Ze.prototype.copy.call(x, g), this.parser.assignFinalMaterial(x), d.push(x);
3722
3731
  }
3723
- return u.isGroup ? (u.clear(), u.add(...h), u) : h[0];
3732
+ return u.isGroup ? (u.clear(), u.add(...d), u) : d[0];
3724
3733
  }));
3725
3734
  }
3726
3735
  }
@@ -3765,25 +3774,25 @@ class gr {
3765
3774
  decodePrimitive(e, t) {
3766
3775
  const n = this.json, s = this.dracoLoader, i = e.extensions[this.name].bufferView, o = e.extensions[this.name].attributes, a = {}, l = {}, A = {};
3767
3776
  for (const u in o) {
3768
- const c = is[u] || u.toLowerCase();
3777
+ const c = os[u] || u.toLowerCase();
3769
3778
  a[c] = o[u];
3770
3779
  }
3771
3780
  for (const u in e.attributes) {
3772
- const c = is[u] || u.toLowerCase();
3781
+ const c = os[u] || u.toLowerCase();
3773
3782
  if (o[u] !== void 0) {
3774
- const d = n.accessors[e.attributes[u]], h = Ze[d.componentType];
3775
- A[c] = h.name, l[c] = d.normalized === !0;
3783
+ const h = n.accessors[e.attributes[u]], d = Be[h.componentType];
3784
+ A[c] = d.name, l[c] = h.normalized === !0;
3776
3785
  }
3777
3786
  }
3778
3787
  return t.getDependency("bufferView", i).then(function(u) {
3779
- return new Promise(function(c, d) {
3780
- s.decodeDracoFile(u, function(h) {
3781
- for (const m in h.attributes) {
3782
- const p = h.attributes[m], f = l[m];
3783
- f !== void 0 && (p.normalized = f);
3788
+ return new Promise(function(c, h) {
3789
+ s.decodeDracoFile(u, function(d) {
3790
+ for (const g in d.attributes) {
3791
+ const f = d.attributes[g], m = l[g];
3792
+ m !== void 0 && (f.normalized = m);
3784
3793
  }
3785
- c(h);
3786
- }, a, A, Ae, d);
3794
+ c(d);
3795
+ }, a, A, Ae, h);
3787
3796
  });
3788
3797
  });
3789
3798
  }
@@ -3812,10 +3821,10 @@ class dn extends fi {
3812
3821
  return t;
3813
3822
  }
3814
3823
  interpolate_(e, t, n, s) {
3815
- const i = this.resultBuffer, o = this.sampleValues, a = this.valueSize, l = a * 2, A = a * 3, u = s - t, c = (n - t) / u, d = c * c, h = d * c, m = e * A, p = m - A, f = -2 * h + 3 * d, g = h - d, x = 1 - f, I = g - d + c;
3824
+ const i = this.resultBuffer, o = this.sampleValues, a = this.valueSize, l = a * 2, A = a * 3, u = s - t, c = (n - t) / u, h = c * c, d = h * c, g = e * A, f = g - A, m = -2 * d + 3 * h, p = d - h, I = 1 - m, x = p - h + c;
3816
3825
  for (let y = 0; y !== a; y++) {
3817
- const S = o[p + y + a], M = o[p + y + l] * u, L = o[m + y + a], Q = o[m + y] * u;
3818
- i[y] = x * S + I * M + f * L + g * Q;
3826
+ const v = o[f + y + a], M = o[f + y + l] * u, L = o[g + y + a], Q = o[g + y] * u;
3827
+ i[y] = I * v + x * M + m * L + p * Q;
3819
3828
  }
3820
3829
  return i;
3821
3830
  }
@@ -3835,7 +3844,7 @@ const se = {
3835
3844
  TRIANGLES: 4,
3836
3845
  TRIANGLE_STRIP: 5,
3837
3846
  TRIANGLE_FAN: 6
3838
- }, Ze = {
3847
+ }, Be = {
3839
3848
  5120: Int8Array,
3840
3849
  5121: Uint8Array,
3841
3850
  5122: Int16Array,
@@ -3844,7 +3853,7 @@ const se = {
3844
3853
  5126: Float32Array
3845
3854
  }, Gs = {
3846
3855
  9728: _s,
3847
- 9729: $t,
3856
+ 9729: es,
3848
3857
  9984: si,
3849
3858
  9985: ti,
3850
3859
  9986: ei,
@@ -3852,7 +3861,7 @@ const se = {
3852
3861
  }, Ks = {
3853
3862
  33071: ii,
3854
3863
  33648: ni,
3855
- 10497: es
3864
+ 10497: ts
3856
3865
  }, Zt = {
3857
3866
  SCALAR: 1,
3858
3867
  VEC2: 2,
@@ -3861,7 +3870,7 @@ const se = {
3861
3870
  MAT2: 4,
3862
3871
  MAT3: 9,
3863
3872
  MAT4: 16
3864
- }, is = {
3873
+ }, os = {
3865
3874
  POSITION: "position",
3866
3875
  NORMAL: "normal",
3867
3876
  TANGENT: "tangent",
@@ -3883,7 +3892,7 @@ const se = {
3883
3892
  // keyframe track will be initialized with a default interpolation type, then modified.
3884
3893
  LINEAR: en,
3885
3894
  STEP: di
3886
- }, Bt = {
3895
+ }, Xt = {
3887
3896
  OPAQUE: "OPAQUE",
3888
3897
  MASK: "MASK",
3889
3898
  BLEND: "BLEND"
@@ -3899,7 +3908,7 @@ function vr(r) {
3899
3908
  side: hi
3900
3909
  })), r.DefaultMaterial;
3901
3910
  }
3902
- function Me(r, e, t) {
3911
+ function we(r, e, t) {
3903
3912
  for (const n in t.extensions)
3904
3913
  r[n] === void 0 && (e.userData.gltfExtensions = e.userData.gltfExtensions || {}, e.userData.gltfExtensions[n] = t.extensions[n]);
3905
3914
  }
@@ -3917,16 +3926,16 @@ function Sr(r, e, t) {
3917
3926
  for (let A = 0, u = e.length; A < u; A++) {
3918
3927
  const c = e[A];
3919
3928
  if (n) {
3920
- const d = c.POSITION !== void 0 ? t.getDependency("accessor", c.POSITION) : r.attributes.position;
3921
- o.push(d);
3929
+ const h = c.POSITION !== void 0 ? t.getDependency("accessor", c.POSITION) : r.attributes.position;
3930
+ o.push(h);
3922
3931
  }
3923
3932
  if (s) {
3924
- const d = c.NORMAL !== void 0 ? t.getDependency("accessor", c.NORMAL) : r.attributes.normal;
3925
- a.push(d);
3933
+ const h = c.NORMAL !== void 0 ? t.getDependency("accessor", c.NORMAL) : r.attributes.normal;
3934
+ a.push(h);
3926
3935
  }
3927
3936
  if (i) {
3928
- const d = c.COLOR_0 !== void 0 ? t.getDependency("accessor", c.COLOR_0) : r.attributes.color;
3929
- l.push(d);
3937
+ const h = c.COLOR_0 !== void 0 ? t.getDependency("accessor", c.COLOR_0) : r.attributes.color;
3938
+ l.push(h);
3930
3939
  }
3931
3940
  }
3932
3941
  return Promise.all([
@@ -3934,8 +3943,8 @@ function Sr(r, e, t) {
3934
3943
  Promise.all(a),
3935
3944
  Promise.all(l)
3936
3945
  ]).then(function(A) {
3937
- const u = A[0], c = A[1], d = A[2];
3938
- return n && (r.morphAttributes.position = u), s && (r.morphAttributes.normal = c), i && (r.morphAttributes.color = d), r.morphTargetsRelative = !0, r;
3946
+ const u = A[0], c = A[1], h = A[2];
3947
+ return n && (r.morphAttributes.position = u), s && (r.morphAttributes.normal = c), i && (r.morphAttributes.color = h), r.morphTargetsRelative = !0, r;
3939
3948
  });
3940
3949
  }
3941
3950
  function Tr(r, e) {
@@ -3955,19 +3964,19 @@ function Tr(r, e) {
3955
3964
  function Mr(r) {
3956
3965
  let e;
3957
3966
  const t = r.extensions && r.extensions[E.KHR_DRACO_MESH_COMPRESSION];
3958
- if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + Xt(t.attributes) : e = r.indices + ":" + Xt(r.attributes) + ":" + r.mode, r.targets !== void 0)
3967
+ if (t ? e = "draco:" + t.bufferView + ":" + t.indices + ":" + qt(t.attributes) : e = r.indices + ":" + qt(r.attributes) + ":" + r.mode, r.targets !== void 0)
3959
3968
  for (let n = 0, s = r.targets.length; n < s; n++)
3960
- e += ":" + Xt(r.targets[n]);
3969
+ e += ":" + qt(r.targets[n]);
3961
3970
  return e;
3962
3971
  }
3963
- function Xt(r) {
3972
+ function qt(r) {
3964
3973
  let e = "";
3965
3974
  const t = Object.keys(r).sort();
3966
3975
  for (let n = 0, s = t.length; n < s; n++)
3967
3976
  e += t[n] + ":" + r[t[n]] + ";";
3968
3977
  return e;
3969
3978
  }
3970
- function os(r) {
3979
+ function rs(r) {
3971
3980
  switch (r) {
3972
3981
  case Int8Array:
3973
3982
  return 1 / 127;
@@ -4025,7 +4034,7 @@ class Er {
4025
4034
  parser: n,
4026
4035
  userData: {}
4027
4036
  };
4028
- return Me(i, a, s), ae(a, s), Promise.all(n._invokeAll(function(l) {
4037
+ return we(i, a, s), ae(a, s), Promise.all(n._invokeAll(function(l) {
4029
4038
  return l.afterRoot && l.afterRoot(a);
4030
4039
  })).then(function() {
4031
4040
  for (const l of a.scenes)
@@ -4235,29 +4244,29 @@ class Er {
4235
4244
  loadAccessor(e) {
4236
4245
  const t = this, n = this.json, s = this.json.accessors[e];
4237
4246
  if (s.bufferView === void 0 && s.sparse === void 0) {
4238
- const o = Zt[s.type], a = Ze[s.componentType], l = s.normalized === !0, A = new a(s.count * o);
4247
+ const o = Zt[s.type], a = Be[s.componentType], l = s.normalized === !0, A = new a(s.count * o);
4239
4248
  return Promise.resolve(new at(A, o, l));
4240
4249
  }
4241
4250
  const i = [];
4242
4251
  return s.bufferView !== void 0 ? i.push(this.getDependency("bufferView", s.bufferView)) : i.push(null), s.sparse !== void 0 && (i.push(this.getDependency("bufferView", s.sparse.indices.bufferView)), i.push(this.getDependency("bufferView", s.sparse.values.bufferView))), Promise.all(i).then(function(o) {
4243
- const a = o[0], l = Zt[s.type], A = Ze[s.componentType], u = A.BYTES_PER_ELEMENT, c = u * l, d = s.byteOffset || 0, h = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, m = s.normalized === !0;
4244
- let p, f;
4245
- if (h && h !== c) {
4246
- const g = Math.floor(d / h), x = "InterleavedBuffer:" + s.bufferView + ":" + s.componentType + ":" + g + ":" + s.count;
4247
- let I = t.cache.get(x);
4248
- I || (p = new A(a, g * h, s.count * h / u), I = new Js(p, h / u), t.cache.add(x, I)), f = new Qs(I, l, d % h / u, m);
4252
+ const a = o[0], l = Zt[s.type], A = Be[s.componentType], u = A.BYTES_PER_ELEMENT, c = u * l, h = s.byteOffset || 0, d = s.bufferView !== void 0 ? n.bufferViews[s.bufferView].byteStride : void 0, g = s.normalized === !0;
4253
+ let f, m;
4254
+ if (d && d !== c) {
4255
+ const p = Math.floor(h / d), I = "InterleavedBuffer:" + s.bufferView + ":" + s.componentType + ":" + p + ":" + s.count;
4256
+ let x = t.cache.get(I);
4257
+ x || (f = new A(a, p * d, s.count * d / u), x = new Js(f, d / u), t.cache.add(I, x)), m = new Qs(x, l, h % d / u, g);
4249
4258
  } else
4250
- a === null ? p = new A(s.count * l) : p = new A(a, d, s.count * l), f = new at(p, l, m);
4259
+ a === null ? f = new A(s.count * l) : f = new A(a, h, s.count * l), m = new at(f, l, g);
4251
4260
  if (s.sparse !== void 0) {
4252
- const g = Zt.SCALAR, x = Ze[s.sparse.indices.componentType], I = s.sparse.indices.byteOffset || 0, y = s.sparse.values.byteOffset || 0, S = new x(o[1], I, s.sparse.count * g), M = new A(o[2], y, s.sparse.count * l);
4253
- a !== null && (f = new at(f.array.slice(), f.itemSize, f.normalized)), f.normalized = !1;
4254
- for (let L = 0, Q = S.length; L < Q; L++) {
4255
- const $ = S[L];
4256
- if (f.setX($, M[L * l]), l >= 2 && f.setY($, M[L * l + 1]), l >= 3 && f.setZ($, M[L * l + 2]), l >= 4 && f.setW($, M[L * l + 3]), l >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
4261
+ const p = Zt.SCALAR, I = Be[s.sparse.indices.componentType], x = s.sparse.indices.byteOffset || 0, y = s.sparse.values.byteOffset || 0, v = new I(o[1], x, s.sparse.count * p), M = new A(o[2], y, s.sparse.count * l);
4262
+ a !== null && (m = new at(m.array.slice(), m.itemSize, m.normalized)), m.normalized = !1;
4263
+ for (let L = 0, Q = v.length; L < Q; L++) {
4264
+ const $ = v[L];
4265
+ if (m.setX($, M[L * l]), l >= 2 && m.setY($, M[L * l + 1]), l >= 3 && m.setZ($, M[L * l + 2]), l >= 4 && m.setW($, M[L * l + 3]), l >= 5) throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.");
4257
4266
  }
4258
- f.normalized = m;
4267
+ m.normalized = g;
4259
4268
  }
4260
- return f;
4269
+ return m;
4261
4270
  });
4262
4271
  }
4263
4272
  /**
@@ -4282,8 +4291,8 @@ class Er {
4282
4291
  return this.textureCache[l];
4283
4292
  const A = this.loadImageSource(t, n).then(function(u) {
4284
4293
  u.flipY = !1, u.name = o.name || a.name || "", u.name === "" && typeof a.uri == "string" && a.uri.startsWith("data:image/") === !1 && (u.name = a.uri);
4285
- const d = (i.samplers || {})[o.sampler] || {};
4286
- return u.magFilter = Gs[d.magFilter] || $t, u.minFilter = Gs[d.minFilter] || Ys, u.wrapS = Ks[d.wrapS] || es, u.wrapT = Ks[d.wrapT] || es, u.generateMipmaps = !u.isCompressedTexture && u.minFilter !== _s && u.minFilter !== $t, s.associations.set(u, { textures: e }), u;
4294
+ const h = (i.samplers || {})[o.sampler] || {};
4295
+ return u.magFilter = Gs[h.magFilter] || es, u.minFilter = Gs[h.minFilter] || Ys, u.wrapS = Ks[h.wrapS] || ts, u.wrapT = Ks[h.wrapT] || ts, u.generateMipmaps = !u.isCompressedTexture && u.minFilter !== _s && u.minFilter !== es, s.associations.set(u, { textures: e }), u;
4287
4296
  }).catch(function() {
4288
4297
  return null;
4289
4298
  });
@@ -4298,18 +4307,18 @@ class Er {
4298
4307
  if (o.bufferView !== void 0)
4299
4308
  l = n.getDependency("bufferView", o.bufferView).then(function(c) {
4300
4309
  A = !0;
4301
- const d = new Blob([c], { type: o.mimeType });
4302
- return l = a.createObjectURL(d), l;
4310
+ const h = new Blob([c], { type: o.mimeType });
4311
+ return l = a.createObjectURL(h), l;
4303
4312
  });
4304
4313
  else if (o.uri === void 0)
4305
4314
  throw new Error("THREE.GLTFLoader: Image " + e + " is missing URI and bufferView");
4306
4315
  const u = Promise.resolve(l).then(function(c) {
4307
- return new Promise(function(d, h) {
4308
- let m = d;
4309
- t.isImageBitmapLoader === !0 && (m = function(p) {
4310
- const f = new gs(p);
4311
- f.needsUpdate = !0, d(f);
4312
- }), t.load(rt.resolveURL(c, i.path), m, void 0, h);
4316
+ return new Promise(function(h, d) {
4317
+ let g = h;
4318
+ t.isImageBitmapLoader === !0 && (g = function(f) {
4319
+ const m = new gs(f);
4320
+ m.needsUpdate = !0, h(m);
4321
+ }), t.load(rt.resolveURL(c, i.path), g, void 0, d);
4313
4322
  });
4314
4323
  }).then(function(c) {
4315
4324
  return A === !0 && a.revokeObjectURL(l), ae(c, o), c.userData.mimeType = o.mimeType || wr(o.uri), c;
@@ -4392,29 +4401,29 @@ class Er {
4392
4401
  o = c.getMaterialType(), A.push(c.extendParams(a, i, t));
4393
4402
  } else {
4394
4403
  const c = i.pbrMetallicRoughness || {};
4395
- if (a.color = new Z(1, 1, 1), a.opacity = 1, Array.isArray(c.baseColorFactor)) {
4396
- const d = c.baseColorFactor;
4397
- a.color.setRGB(d[0], d[1], d[2], Ae), a.opacity = d[3];
4404
+ if (a.color = new B(1, 1, 1), a.opacity = 1, Array.isArray(c.baseColorFactor)) {
4405
+ const h = c.baseColorFactor;
4406
+ a.color.setRGB(h[0], h[1], h[2], Ae), a.opacity = h[3];
4398
4407
  }
4399
- c.baseColorTexture !== void 0 && A.push(t.assignTexture(a, "map", c.baseColorTexture, he)), a.metalness = c.metallicFactor !== void 0 ? c.metallicFactor : 1, a.roughness = c.roughnessFactor !== void 0 ? c.roughnessFactor : 1, c.metallicRoughnessTexture !== void 0 && (A.push(t.assignTexture(a, "metalnessMap", c.metallicRoughnessTexture)), A.push(t.assignTexture(a, "roughnessMap", c.metallicRoughnessTexture))), o = this._invokeOne(function(d) {
4400
- return d.getMaterialType && d.getMaterialType(e);
4401
- }), A.push(Promise.all(this._invokeAll(function(d) {
4402
- return d.extendMaterialParams && d.extendMaterialParams(e, a);
4408
+ c.baseColorTexture !== void 0 && A.push(t.assignTexture(a, "map", c.baseColorTexture, he)), a.metalness = c.metallicFactor !== void 0 ? c.metallicFactor : 1, a.roughness = c.roughnessFactor !== void 0 ? c.roughnessFactor : 1, c.metallicRoughnessTexture !== void 0 && (A.push(t.assignTexture(a, "metalnessMap", c.metallicRoughnessTexture)), A.push(t.assignTexture(a, "roughnessMap", c.metallicRoughnessTexture))), o = this._invokeOne(function(h) {
4409
+ return h.getMaterialType && h.getMaterialType(e);
4410
+ }), A.push(Promise.all(this._invokeAll(function(h) {
4411
+ return h.extendMaterialParams && h.extendMaterialParams(e, a);
4403
4412
  })));
4404
4413
  }
4405
4414
  i.doubleSided === !0 && (a.side = kt);
4406
- const u = i.alphaMode || Bt.OPAQUE;
4407
- if (u === Bt.BLEND ? (a.transparent = !0, a.depthWrite = !1) : (a.transparent = !1, u === Bt.MASK && (a.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "normalMap", i.normalTexture)), a.normalScale = new F(1, 1), i.normalTexture.scale !== void 0)) {
4415
+ const u = i.alphaMode || Xt.OPAQUE;
4416
+ if (u === Xt.BLEND ? (a.transparent = !0, a.depthWrite = !1) : (a.transparent = !1, u === Xt.MASK && (a.alphaTest = i.alphaCutoff !== void 0 ? i.alphaCutoff : 0.5)), i.normalTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "normalMap", i.normalTexture)), a.normalScale = new F(1, 1), i.normalTexture.scale !== void 0)) {
4408
4417
  const c = i.normalTexture.scale;
4409
4418
  a.normalScale.set(c, c);
4410
4419
  }
4411
4420
  if (i.occlusionTexture !== void 0 && o !== Ne && (A.push(t.assignTexture(a, "aoMap", i.occlusionTexture)), i.occlusionTexture.strength !== void 0 && (a.aoMapIntensity = i.occlusionTexture.strength)), i.emissiveFactor !== void 0 && o !== Ne) {
4412
4421
  const c = i.emissiveFactor;
4413
- a.emissive = new Z().setRGB(c[0], c[1], c[2], Ae);
4422
+ a.emissive = new B().setRGB(c[0], c[1], c[2], Ae);
4414
4423
  }
4415
4424
  return i.emissiveTexture !== void 0 && o !== Ne && A.push(t.assignTexture(a, "emissiveMap", i.emissiveTexture, he)), Promise.all(A).then(function() {
4416
4425
  const c = new o(a);
4417
- return i.name && (c.name = i.name), ae(c, i), t.associations.set(c, { materials: e }), i.extensions && Me(s, c, i), c;
4426
+ return i.name && (c.name = i.name), ae(c, i), t.associations.set(c, { materials: e }), i.extensions && we(s, c, i), c;
4418
4427
  });
4419
4428
  }
4420
4429
  /**
@@ -4441,7 +4450,7 @@ class Er {
4441
4450
  const t = this, n = this.extensions, s = this.primitiveCache;
4442
4451
  function i(a) {
4443
4452
  return n[E.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(a, t).then(function(l) {
4444
- return Zs(l, a, t);
4453
+ return Bs(l, a, t);
4445
4454
  });
4446
4455
  }
4447
4456
  const o = [];
@@ -4450,8 +4459,8 @@ class Er {
4450
4459
  if (c)
4451
4460
  o.push(c.promise);
4452
4461
  else {
4453
- let d;
4454
- A.extensions && A.extensions[E.KHR_DRACO_MESH_COMPRESSION] ? d = i(A) : d = Zs(new De(), A, t), s[u] = { primitive: A, promise: d }, o.push(d);
4462
+ let h;
4463
+ A.extensions && A.extensions[E.KHR_DRACO_MESH_COMPRESSION] ? h = i(A) : h = Bs(new De(), A, t), s[u] = { primitive: A, promise: h }, o.push(h);
4455
4464
  }
4456
4465
  }
4457
4466
  return Promise.all(o);
@@ -4471,36 +4480,36 @@ class Er {
4471
4480
  }
4472
4481
  return a.push(t.loadGeometries(o)), Promise.all(a).then(function(l) {
4473
4482
  const A = l.slice(0, l.length - 1), u = l[l.length - 1], c = [];
4474
- for (let h = 0, m = u.length; h < m; h++) {
4475
- const p = u[h], f = o[h];
4476
- let g;
4477
- const x = A[h];
4478
- if (f.mode === se.TRIANGLES || f.mode === se.TRIANGLE_STRIP || f.mode === se.TRIANGLE_FAN || f.mode === void 0)
4479
- g = i.isSkinnedMesh === !0 ? new ri(p, x) : new v(p, x), g.isSkinnedMesh === !0 && g.normalizeSkinWeights(), f.mode === se.TRIANGLE_STRIP ? g.geometry = Us(g.geometry, Vs) : f.mode === se.TRIANGLE_FAN && (g.geometry = Us(g.geometry, _t));
4480
- else if (f.mode === se.LINES)
4481
- g = new Yt(p, x);
4482
- else if (f.mode === se.LINE_STRIP)
4483
- g = new de(p, x);
4484
- else if (f.mode === se.LINE_LOOP)
4485
- g = new ai(p, x);
4486
- else if (f.mode === se.POINTS)
4487
- g = new Tt(p, x);
4483
+ for (let d = 0, g = u.length; d < g; d++) {
4484
+ const f = u[d], m = o[d];
4485
+ let p;
4486
+ const I = A[d];
4487
+ if (m.mode === se.TRIANGLES || m.mode === se.TRIANGLE_STRIP || m.mode === se.TRIANGLE_FAN || m.mode === void 0)
4488
+ p = i.isSkinnedMesh === !0 ? new ri(f, I) : new S(f, I), p.isSkinnedMesh === !0 && p.normalizeSkinWeights(), m.mode === se.TRIANGLE_STRIP ? p.geometry = Us(p.geometry, Vs) : m.mode === se.TRIANGLE_FAN && (p.geometry = Us(p.geometry, $t));
4489
+ else if (m.mode === se.LINES)
4490
+ p = new _t(f, I);
4491
+ else if (m.mode === se.LINE_STRIP)
4492
+ p = new de(f, I);
4493
+ else if (m.mode === se.LINE_LOOP)
4494
+ p = new ai(f, I);
4495
+ else if (m.mode === se.POINTS)
4496
+ p = new Tt(f, I);
4488
4497
  else
4489
- throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + f.mode);
4490
- Object.keys(g.geometry.morphAttributes).length > 0 && Tr(g, i), g.name = t.createUniqueName(i.name || "mesh_" + e), ae(g, i), f.extensions && Me(s, g, f), t.assignFinalMaterial(g), c.push(g);
4498
+ throw new Error("THREE.GLTFLoader: Primitive mode unsupported: " + m.mode);
4499
+ Object.keys(p.geometry.morphAttributes).length > 0 && Tr(p, i), p.name = t.createUniqueName(i.name || "mesh_" + e), ae(p, i), m.extensions && we(s, p, m), t.assignFinalMaterial(p), c.push(p);
4491
4500
  }
4492
- for (let h = 0, m = c.length; h < m; h++)
4493
- t.associations.set(c[h], {
4501
+ for (let d = 0, g = c.length; d < g; d++)
4502
+ t.associations.set(c[d], {
4494
4503
  meshes: e,
4495
- primitives: h
4504
+ primitives: d
4496
4505
  });
4497
4506
  if (c.length === 1)
4498
- return i.extensions && Me(s, c[0], i), c[0];
4499
- const d = new St();
4500
- i.extensions && Me(s, d, i), t.associations.set(d, { meshes: e });
4501
- for (let h = 0, m = c.length; h < m; h++)
4502
- d.add(c[h]);
4503
- return d;
4507
+ return i.extensions && we(s, c[0], i), c[0];
4508
+ const h = new St();
4509
+ i.extensions && we(s, h, i), t.associations.set(h, { meshes: e });
4510
+ for (let d = 0, g = c.length; d < g; d++)
4511
+ h.add(c[d]);
4512
+ return h;
4504
4513
  });
4505
4514
  }
4506
4515
  /**
@@ -4536,8 +4545,8 @@ class Er {
4536
4545
  const c = o[A];
4537
4546
  if (c) {
4538
4547
  a.push(c);
4539
- const d = new fe();
4540
- i !== null && d.fromArray(i.array, A * 16), l.push(d);
4548
+ const h = new fe();
4549
+ i !== null && h.fromArray(i.array, A * 16), l.push(h);
4541
4550
  } else
4542
4551
  console.warn('THREE.GLTFLoader: Joint "%s" could not be found.', t.joints[A]);
4543
4552
  }
@@ -4553,9 +4562,9 @@ class Er {
4553
4562
  */
4554
4563
  loadAnimation(e) {
4555
4564
  const t = this.json, n = this, s = t.animations[e], i = s.name ? s.name : "animation_" + e, o = [], a = [], l = [], A = [], u = [];
4556
- for (let c = 0, d = s.channels.length; c < d; c++) {
4557
- const h = s.channels[c], m = s.samplers[h.sampler], p = h.target, f = p.node, g = s.parameters !== void 0 ? s.parameters[m.input] : m.input, x = s.parameters !== void 0 ? s.parameters[m.output] : m.output;
4558
- p.node !== void 0 && (o.push(this.getDependency("node", f)), a.push(this.getDependency("accessor", g)), l.push(this.getDependency("accessor", x)), A.push(m), u.push(p));
4565
+ for (let c = 0, h = s.channels.length; c < h; c++) {
4566
+ const d = s.channels[c], g = s.samplers[d.sampler], f = d.target, m = f.node, p = s.parameters !== void 0 ? s.parameters[g.input] : g.input, I = s.parameters !== void 0 ? s.parameters[g.output] : g.output;
4567
+ f.node !== void 0 && (o.push(this.getDependency("node", m)), a.push(this.getDependency("accessor", p)), l.push(this.getDependency("accessor", I)), A.push(g), u.push(f));
4559
4568
  }
4560
4569
  return Promise.all([
4561
4570
  Promise.all(o),
@@ -4564,18 +4573,18 @@ class Er {
4564
4573
  Promise.all(A),
4565
4574
  Promise.all(u)
4566
4575
  ]).then(function(c) {
4567
- const d = c[0], h = c[1], m = c[2], p = c[3], f = c[4], g = [];
4568
- for (let I = 0, y = d.length; I < y; I++) {
4569
- const S = d[I], M = h[I], L = m[I], Q = p[I], $ = f[I];
4570
- if (S === void 0) continue;
4571
- S.updateMatrix && S.updateMatrix();
4572
- const Y = n._createAnimationTracks(S, M, L, Q, $);
4576
+ const h = c[0], d = c[1], g = c[2], f = c[3], m = c[4], p = [];
4577
+ for (let x = 0, y = h.length; x < y; x++) {
4578
+ const v = h[x], M = d[x], L = g[x], Q = f[x], $ = m[x];
4579
+ if (v === void 0) continue;
4580
+ v.updateMatrix && v.updateMatrix();
4581
+ const Y = n._createAnimationTracks(v, M, L, Q, $);
4573
4582
  if (Y)
4574
- for (let Se = 0; Se < Y.length; Se++)
4575
- g.push(Y[Se]);
4583
+ for (let Te = 0; Te < Y.length; Te++)
4584
+ p.push(Y[Te]);
4576
4585
  }
4577
- const x = new ci(i, void 0, g);
4578
- return ae(x, s), x;
4586
+ const I = new ci(i, void 0, p);
4587
+ return ae(I, s), I;
4579
4588
  });
4580
4589
  }
4581
4590
  createNodeMesh(e) {
@@ -4606,15 +4615,15 @@ class Er {
4606
4615
  Promise.all(o),
4607
4616
  l
4608
4617
  ]).then(function(A) {
4609
- const u = A[0], c = A[1], d = A[2];
4610
- d !== null && u.traverse(function(h) {
4611
- h.isSkinnedMesh && h.bind(d, Rr);
4618
+ const u = A[0], c = A[1], h = A[2];
4619
+ h !== null && u.traverse(function(d) {
4620
+ d.isSkinnedMesh && d.bind(h, Rr);
4612
4621
  });
4613
- for (let h = 0, m = c.length; h < m; h++)
4614
- u.add(c[h]);
4622
+ for (let d = 0, g = c.length; d < g; d++)
4623
+ u.add(c[d]);
4615
4624
  if (u.userData.pivot !== void 0 && c.length > 0) {
4616
- const h = u.userData.pivot, m = c[0];
4617
- u.pivot = new T().fromArray(h), u.position.x -= h[0], u.position.y -= h[1], u.position.z -= h[2], m.position.set(0, 0, 0), delete u.userData.pivot;
4625
+ const d = u.userData.pivot, g = c[0];
4626
+ u.pivot = new T().fromArray(d), u.position.x -= d[0], u.position.y -= d[1], u.position.z -= d[2], g.position.set(0, 0, 0), delete u.userData.pivot;
4618
4627
  }
4619
4628
  return u;
4620
4629
  });
@@ -4636,10 +4645,10 @@ class Er {
4636
4645
  a.push(A);
4637
4646
  }), this.nodeCache[e] = Promise.all(a).then(function(A) {
4638
4647
  let u;
4639
- if (i.isBone === !0 ? u = new ui() : A.length > 1 ? u = new St() : A.length === 1 ? u = A[0] : u = new Be(), u !== A[0])
4640
- for (let c = 0, d = A.length; c < d; c++)
4648
+ if (i.isBone === !0 ? u = new ui() : A.length > 1 ? u = new St() : A.length === 1 ? u = A[0] : u = new Ze(), u !== A[0])
4649
+ for (let c = 0, h = A.length; c < h; c++)
4641
4650
  u.add(A[c]);
4642
- if (i.name && (u.userData.name = i.name, u.name = o), ae(u, i), i.extensions && Me(n, u, i), i.matrix !== void 0) {
4651
+ if (i.name && (u.userData.name = i.name, u.name = o), ae(u, i), i.extensions && we(n, u, i), i.matrix !== void 0) {
4643
4652
  const c = new fe();
4644
4653
  c.fromArray(i.matrix), u.applyMatrix4(c);
4645
4654
  } else
@@ -4662,22 +4671,22 @@ class Er {
4662
4671
  */
4663
4672
  loadScene(e) {
4664
4673
  const t = this.extensions, n = this.json.scenes[e], s = this, i = new St();
4665
- n.name && (i.name = s.createUniqueName(n.name)), ae(i, n), n.extensions && Me(t, i, n);
4674
+ n.name && (i.name = s.createUniqueName(n.name)), ae(i, n), n.extensions && we(t, i, n);
4666
4675
  const o = n.nodes || [], a = [];
4667
4676
  for (let l = 0, A = o.length; l < A; l++)
4668
4677
  a.push(s.getDependency("node", o[l]));
4669
4678
  return Promise.all(a).then(function(l) {
4670
4679
  for (let u = 0, c = l.length; u < c; u++) {
4671
- const d = l[u];
4672
- d.parent !== null ? i.add(Qo(d)) : i.add(d);
4680
+ const h = l[u];
4681
+ h.parent !== null ? i.add(Qo(h)) : i.add(h);
4673
4682
  }
4674
4683
  const A = (u) => {
4675
4684
  const c = /* @__PURE__ */ new Map();
4676
- for (const [d, h] of s.associations)
4677
- (d instanceof ot || d instanceof gs) && c.set(d, h);
4678
- return u.traverse((d) => {
4679
- const h = s.associations.get(d);
4680
- h != null && c.set(d, h);
4685
+ for (const [h, d] of s.associations)
4686
+ (h instanceof ot || h instanceof gs) && c.set(h, d);
4687
+ return u.traverse((h) => {
4688
+ const d = s.associations.get(h);
4689
+ d != null && c.set(h, d);
4681
4690
  }), c;
4682
4691
  };
4683
4692
  return s.associations = A(i), i;
@@ -4685,8 +4694,8 @@ class Er {
4685
4694
  }
4686
4695
  _createAnimationTracks(e, t, n, s, i) {
4687
4696
  const o = [], a = e.name ? e.name : e.uuid, l = [];
4688
- function A(h) {
4689
- h.morphTargetInfluences && l.push(h.name ? h.name : h.uuid);
4697
+ function A(d) {
4698
+ d.morphTargetInfluences && l.push(d.name ? d.name : d.uuid);
4690
4699
  }
4691
4700
  me[i.path] === me.weights ? (A(e), e.isGroup && e.children.forEach(A)) : l.push(a);
4692
4701
  let u;
@@ -4714,22 +4723,22 @@ class Er {
4714
4723
  }
4715
4724
  break;
4716
4725
  }
4717
- const c = s.interpolation !== void 0 ? xr[s.interpolation] : en, d = this._getArrayFromAccessor(n);
4718
- for (let h = 0, m = l.length; h < m; h++) {
4719
- const p = new u(
4720
- l[h] + "." + me[i.path],
4726
+ const c = s.interpolation !== void 0 ? xr[s.interpolation] : en, h = this._getArrayFromAccessor(n);
4727
+ for (let d = 0, g = l.length; d < g; d++) {
4728
+ const f = new u(
4729
+ l[d] + "." + me[i.path],
4721
4730
  t.array,
4722
- d,
4731
+ h,
4723
4732
  c
4724
4733
  );
4725
- s.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(p), o.push(p);
4734
+ s.interpolation === "CUBICSPLINE" && this._createCubicSplineTrackInterpolant(f), o.push(f);
4726
4735
  }
4727
4736
  return o;
4728
4737
  }
4729
4738
  _getArrayFromAccessor(e) {
4730
4739
  let t = e.array;
4731
4740
  if (e.normalized) {
4732
- const n = os(t.constructor), s = new Float32Array(t.length);
4741
+ const n = rs(t.constructor), s = new Float32Array(t.length);
4733
4742
  for (let i = 0, o = t.length; i < o; i++)
4734
4743
  s[i] = t[i] * n;
4735
4744
  t = s;
@@ -4752,7 +4761,7 @@ function kr(r, e, t) {
4752
4761
  new T(l[0], l[1], l[2]),
4753
4762
  new T(A[0], A[1], A[2])
4754
4763
  ), a.normalized) {
4755
- const u = os(Ze[a.componentType]);
4764
+ const u = rs(Be[a.componentType]);
4756
4765
  s.min.multiplyScalar(u), s.max.multiplyScalar(u);
4757
4766
  }
4758
4767
  } else {
@@ -4767,11 +4776,11 @@ function kr(r, e, t) {
4767
4776
  for (let A = 0, u = i.length; A < u; A++) {
4768
4777
  const c = i[A];
4769
4778
  if (c.POSITION !== void 0) {
4770
- const d = t.json.accessors[c.POSITION], h = d.min, m = d.max;
4771
- if (h !== void 0 && m !== void 0) {
4772
- if (l.setX(Math.max(Math.abs(h[0]), Math.abs(m[0]))), l.setY(Math.max(Math.abs(h[1]), Math.abs(m[1]))), l.setZ(Math.max(Math.abs(h[2]), Math.abs(m[2]))), d.normalized) {
4773
- const p = os(Ze[d.componentType]);
4774
- l.multiplyScalar(p);
4779
+ const h = t.json.accessors[c.POSITION], d = h.min, g = h.max;
4780
+ if (d !== void 0 && g !== void 0) {
4781
+ if (l.setX(Math.max(Math.abs(d[0]), Math.abs(g[0]))), l.setY(Math.max(Math.abs(d[1]), Math.abs(g[1]))), l.setZ(Math.max(Math.abs(d[2]), Math.abs(g[2]))), h.normalized) {
4782
+ const f = rs(Be[h.componentType]);
4783
+ l.multiplyScalar(f);
4775
4784
  }
4776
4785
  a.max(l);
4777
4786
  } else
@@ -4784,7 +4793,7 @@ function kr(r, e, t) {
4784
4793
  const o = new mi();
4785
4794
  s.getCenter(o.center), o.radius = s.min.distanceTo(s.max) / 2, r.boundingSphere = o;
4786
4795
  }
4787
- function Zs(r, e, t) {
4796
+ function Bs(r, e, t) {
4788
4797
  const n = e.attributes, s = [];
4789
4798
  function i(o, a) {
4790
4799
  return t.getDependency("accessor", o).then(function(l) {
@@ -4792,7 +4801,7 @@ function Zs(r, e, t) {
4792
4801
  });
4793
4802
  }
4794
4803
  for (const o in n) {
4795
- const a = is[o] || o.toLowerCase();
4804
+ const a = os[o] || o.toLowerCase();
4796
4805
  a in r.attributes || s.push(i(n[o], a));
4797
4806
  }
4798
4807
  if (e.indices !== void 0 && !r.index) {
@@ -4805,8 +4814,8 @@ function Zs(r, e, t) {
4805
4814
  return e.targets !== void 0 ? Sr(r, e.targets, t) : r;
4806
4815
  });
4807
4816
  }
4808
- const qt = /* @__PURE__ */ new WeakMap();
4809
- class Pr extends as {
4817
+ const Vt = /* @__PURE__ */ new WeakMap();
4818
+ class Pr extends ls {
4810
4819
  /**
4811
4820
  * Constructs a new Draco loader.
4812
4821
  *
@@ -4892,8 +4901,8 @@ class Pr extends as {
4892
4901
  }
4893
4902
  decodeGeometry(e, t) {
4894
4903
  const n = JSON.stringify(t);
4895
- if (qt.has(e)) {
4896
- const l = qt.get(e);
4904
+ if (Vt.has(e)) {
4905
+ const l = Vt.get(e);
4897
4906
  if (l.key === n)
4898
4907
  return l.promise;
4899
4908
  if (e.byteLength === 0)
@@ -4907,7 +4916,7 @@ class Pr extends as {
4907
4916
  }))).then((l) => this._createGeometry(l.geometry));
4908
4917
  return a.catch(() => !0).then(() => {
4909
4918
  s && i && this._releaseTask(s, i);
4910
- }), qt.set(e, {
4919
+ }), Vt.set(e, {
4911
4920
  key: n,
4912
4921
  promise: a
4913
4922
  }), a;
@@ -4930,7 +4939,7 @@ class Pr extends as {
4930
4939
  }
4931
4940
  _assignVertexColorSpace(e, t) {
4932
4941
  if (t !== he) return;
4933
- const n = new Z();
4942
+ const n = new B();
4934
4943
  for (let s = 0, i = e.count; s < i; s++)
4935
4944
  n.fromBufferAttribute(e, s), Pt.colorSpaceToWorking(n, he), e.setXYZ(s, n.r, n.g, n.b);
4936
4945
  }
@@ -5012,14 +5021,14 @@ function Lr() {
5012
5021
  case "decode":
5013
5022
  const l = a.buffer, A = a.taskConfig;
5014
5023
  e.then((u) => {
5015
- const c = u.draco, d = new c.Decoder();
5024
+ const c = u.draco, h = new c.Decoder();
5016
5025
  try {
5017
- const h = t(c, d, new Int8Array(l), A), m = h.attributes.map((p) => p.array.buffer);
5018
- h.index && m.push(h.index.array.buffer), self.postMessage({ type: "decode", id: a.id, geometry: h }, m);
5019
- } catch (h) {
5020
- console.error(h), self.postMessage({ type: "error", id: a.id, error: h.message });
5026
+ const d = t(c, h, new Int8Array(l), A), g = d.attributes.map((f) => f.array.buffer);
5027
+ d.index && g.push(d.index.array.buffer), self.postMessage({ type: "decode", id: a.id, geometry: d }, g);
5028
+ } catch (d) {
5029
+ console.error(d), self.postMessage({ type: "error", id: a.id, error: d.message });
5021
5030
  } finally {
5022
- c.destroy(d);
5031
+ c.destroy(h);
5023
5032
  }
5024
5033
  });
5025
5034
  break;
@@ -5027,59 +5036,59 @@ function Lr() {
5027
5036
  };
5028
5037
  function t(o, a, l, A) {
5029
5038
  const u = A.attributeIDs, c = A.attributeTypes;
5030
- let d, h;
5031
- const m = a.GetEncodedGeometryType(l);
5032
- if (m === o.TRIANGULAR_MESH)
5033
- d = new o.Mesh(), h = a.DecodeArrayToMesh(l, l.byteLength, d);
5034
- else if (m === o.POINT_CLOUD)
5035
- d = new o.PointCloud(), h = a.DecodeArrayToPointCloud(l, l.byteLength, d);
5039
+ let h, d;
5040
+ const g = a.GetEncodedGeometryType(l);
5041
+ if (g === o.TRIANGULAR_MESH)
5042
+ h = new o.Mesh(), d = a.DecodeArrayToMesh(l, l.byteLength, h);
5043
+ else if (g === o.POINT_CLOUD)
5044
+ h = new o.PointCloud(), d = a.DecodeArrayToPointCloud(l, l.byteLength, h);
5036
5045
  else
5037
5046
  throw new Error("THREE.DRACOLoader: Unexpected geometry type.");
5038
- if (!h.ok() || d.ptr === 0)
5039
- throw new Error("THREE.DRACOLoader: Decoding failed: " + h.error_msg());
5040
- const p = { index: null, attributes: [] };
5041
- for (const f in u) {
5042
- const g = self[c[f]];
5043
- let x, I;
5047
+ if (!d.ok() || h.ptr === 0)
5048
+ throw new Error("THREE.DRACOLoader: Decoding failed: " + d.error_msg());
5049
+ const f = { index: null, attributes: [] };
5050
+ for (const m in u) {
5051
+ const p = self[c[m]];
5052
+ let I, x;
5044
5053
  if (A.useUniqueIDs)
5045
- I = u[f], x = a.GetAttributeByUniqueId(d, I);
5054
+ x = u[m], I = a.GetAttributeByUniqueId(h, x);
5046
5055
  else {
5047
- if (I = a.GetAttributeId(d, o[u[f]]), I === -1) continue;
5048
- x = a.GetAttribute(d, I);
5056
+ if (x = a.GetAttributeId(h, o[u[m]]), x === -1) continue;
5057
+ I = a.GetAttribute(h, x);
5049
5058
  }
5050
- const y = s(o, a, d, f, g, x);
5051
- f === "color" && (y.vertexColorSpace = A.vertexColorSpace), p.attributes.push(y);
5059
+ const y = s(o, a, h, m, p, I);
5060
+ m === "color" && (y.vertexColorSpace = A.vertexColorSpace), f.attributes.push(y);
5052
5061
  }
5053
- return m === o.TRIANGULAR_MESH && (p.index = n(o, a, d)), o.destroy(d), p;
5062
+ return g === o.TRIANGULAR_MESH && (f.index = n(o, a, h)), o.destroy(h), f;
5054
5063
  }
5055
5064
  function n(o, a, l) {
5056
- const u = l.num_faces() * 3, c = u * 4, d = o._malloc(c);
5057
- a.GetTrianglesUInt32Array(l, c, d);
5058
- const h = new Uint32Array(o.HEAPF32.buffer, d, u).slice();
5059
- return o._free(d), { array: h, itemSize: 1 };
5065
+ const u = l.num_faces() * 3, c = u * 4, h = o._malloc(c);
5066
+ a.GetTrianglesUInt32Array(l, c, h);
5067
+ const d = new Uint32Array(o.HEAPF32.buffer, h, u).slice();
5068
+ return o._free(h), { array: d, itemSize: 1 };
5060
5069
  }
5061
5070
  function s(o, a, l, A, u, c) {
5062
- const d = l.num_points(), h = c.num_components(), m = i(o, u), p = h * u.BYTES_PER_ELEMENT, f = Math.ceil(p / 4) * 4, g = f / u.BYTES_PER_ELEMENT, x = d * p, I = d * f, y = o._malloc(x);
5063
- a.GetAttributeDataArrayForAllPoints(l, c, m, x, y);
5064
- const S = new u(o.HEAPF32.buffer, y, x / u.BYTES_PER_ELEMENT);
5071
+ const h = l.num_points(), d = c.num_components(), g = i(o, u), f = d * u.BYTES_PER_ELEMENT, m = Math.ceil(f / 4) * 4, p = m / u.BYTES_PER_ELEMENT, I = h * f, x = h * m, y = o._malloc(I);
5072
+ a.GetAttributeDataArrayForAllPoints(l, c, g, I, y);
5073
+ const v = new u(o.HEAPF32.buffer, y, I / u.BYTES_PER_ELEMENT);
5065
5074
  let M;
5066
- if (p === f)
5067
- M = S.slice();
5075
+ if (f === m)
5076
+ M = v.slice();
5068
5077
  else {
5069
- M = new u(I / u.BYTES_PER_ELEMENT);
5078
+ M = new u(x / u.BYTES_PER_ELEMENT);
5070
5079
  let L = 0;
5071
- for (let Q = 0, $ = S.length; Q < $; Q++) {
5072
- for (let Y = 0; Y < h; Y++)
5073
- M[L + Y] = S[Q * h + Y];
5074
- L += g;
5080
+ for (let Q = 0, $ = v.length; Q < $; Q++) {
5081
+ for (let Y = 0; Y < d; Y++)
5082
+ M[L + Y] = v[Q * d + Y];
5083
+ L += p;
5075
5084
  }
5076
5085
  }
5077
5086
  return o._free(y), {
5078
5087
  name: A,
5079
- count: d,
5080
- itemSize: h,
5088
+ count: h,
5089
+ itemSize: d,
5081
5090
  array: M,
5082
- stride: g
5091
+ stride: p
5083
5092
  };
5084
5093
  }
5085
5094
  function i(o, a) {
@@ -5130,26 +5139,26 @@ function jr(r) {
5130
5139
  repeatY: l = 4,
5131
5140
  speedX: A = 5e-4,
5132
5141
  speedY: u = 5e-4
5133
- } = r || {}, c = new w.PlaneGeometry(e, t), h = new w.TextureLoader().load(Nr, (f) => {
5134
- f.wrapS = f.wrapT = w.RepeatWrapping, f.repeat.set(a, l), f.generateMipmaps = !1, f.minFilter = w.LinearFilter, f.magFilter = w.LinearFilter;
5135
- }), m = new w.MeshStandardMaterial({
5142
+ } = r || {}, c = new w.PlaneGeometry(e, t), d = new w.TextureLoader().load(Nr, (m) => {
5143
+ m.wrapS = m.wrapT = w.RepeatWrapping, m.repeat.set(a, l), m.generateMipmaps = !1, m.minFilter = w.LinearFilter, m.magFilter = w.LinearFilter;
5144
+ }), g = new w.MeshStandardMaterial({
5136
5145
  color: n,
5137
5146
  roughness: s,
5138
5147
  metalness: i,
5139
- normalMap: h,
5148
+ normalMap: d,
5140
5149
  normalScale: new w.Vector2(o, o),
5141
5150
  side: w.DoubleSide,
5142
5151
  // 双面渲染,避免从侧面或底部看到黑色
5143
5152
  transparent: !0,
5144
5153
  opacity: 0.6
5145
- }), p = new w.Mesh(c, m);
5146
- p.rotation.x = -Math.PI / 2, p.position.y = 0, p.name = "水面(标准材质)", p.userData.isWater = !0, p.userData.isMovable = !0, p.userData.waterSpeed = { x: A, y: u }, Xe(p);
5154
+ }), f = new w.Mesh(c, g);
5155
+ f.rotation.x = -Math.PI / 2, f.position.y = 0, f.name = "水面(标准材质)", f.userData.isWater = !0, f.userData.isMovable = !0, f.userData.waterSpeed = { x: A, y: u }, Xe(f);
5147
5156
  }
5148
5157
  function Fr(r) {
5149
5158
  const e = Uo();
5150
5159
  if (!e)
5151
5160
  return console.warn("请先选中一个模型,再添加数据面板"), null;
5152
- const t = cs(e);
5161
+ const t = Wt(e);
5153
5162
  t && (t.dispose(), oo(e));
5154
5163
  const n = [
5155
5164
  { label: "温度", value: "30", unit: "℃" },
@@ -5163,7 +5172,7 @@ function Fr(r) {
5163
5172
  return s.attachTo(e), nn(e, s), Ro(e), s;
5164
5173
  }
5165
5174
  function Ur(r) {
5166
- return Gt(!0), new Promise((e, t) => {
5175
+ return Kt(!0), new Promise((e, t) => {
5167
5176
  var o;
5168
5177
  const n = (o = r.name.split(".").pop()) == null ? void 0 : o.toLowerCase(), s = URL.createObjectURL(r);
5169
5178
  let i;
@@ -5185,15 +5194,15 @@ function Ur(r) {
5185
5194
  (a) => {
5186
5195
  const l = n === "gltf" || n === "glb" ? a.scene : a;
5187
5196
  l.traverse((c) => {
5188
- var d;
5189
- c.userData.isMovable = !0, c.name || (c.name = c.type), c.type === "Mesh" && (c.frustumCulled = !0, (d = c.geometry) == null || d.computeVertexNormals(), c.castShadow = !0, c.receiveShadow = !0);
5197
+ var h;
5198
+ c.userData.isMovable = !0, c.name || (c.name = c.type), c.type === "Mesh" && (c.frustumCulled = !0, (h = c.geometry) == null || h.computeVertexNormals(), c.castShadow = !0, c.receiveShadow = !0);
5190
5199
  });
5191
5200
  const u = new w.Box3().setFromObject(l).getCenter(new w.Vector3());
5192
- l.position.sub(u), Xe(l, !0), Gt(!1), e(l);
5201
+ l.position.sub(u), Xe(l, !0), Kt(!1), e(l);
5193
5202
  },
5194
5203
  void 0,
5195
5204
  (a) => {
5196
- Gt(!1), t(a);
5205
+ Kt(!1), t(a);
5197
5206
  }
5198
5207
  );
5199
5208
  });
@@ -5220,10 +5229,10 @@ function Hr(r) {
5220
5229
  const zr = {
5221
5230
  key: 1,
5222
5231
  class: "toggle-placeholder"
5223
- }, Gr = { class: "tree-icon" }, Kr = { class: "tree-name" }, Zr = {
5232
+ }, Gr = { class: "tree-icon" }, Kr = { class: "tree-name" }, Br = {
5224
5233
  key: 0,
5225
5234
  class: "tree-children"
5226
- }, Br = /* @__PURE__ */ xe({
5235
+ }, Zr = /* @__PURE__ */ ve({
5227
5236
  __name: "TreeItem",
5228
5237
  props: {
5229
5238
  node: {},
@@ -5232,12 +5241,12 @@ const zr = {
5232
5241
  },
5233
5242
  emits: ["select", "delete"],
5234
5243
  setup(r, { emit: e }) {
5235
- const t = r, n = e, s = W(null), { expandedSet: i, toggleExpand: o } = gn("treeExpand"), a = $e(() => i.value.has(t.node.uuid)), l = $e(() => (t.version, t.node.children.some((p) => p.userData.isMovable === !0))), A = $e(() => (t.version, t.node.children.filter(
5236
- (p) => p.userData.isMovable === !0
5244
+ const t = r, n = e, s = W(null), { expandedSet: i, toggleExpand: o } = gn("treeExpand"), a = $e(() => i.value.has(t.node.uuid)), l = $e(() => (t.version, t.node.children.some((f) => f.userData.isMovable === !0))), A = $e(() => (t.version, t.node.children.filter(
5245
+ (f) => f.userData.isMovable === !0
5237
5246
  ))), u = $e(
5238
5247
  () => {
5239
- var p;
5240
- return ((p = t.selectedObject) == null ? void 0 : p.uuid) === t.node.uuid;
5248
+ var f;
5249
+ return ((f = t.selectedObject) == null ? void 0 : f.uuid) === t.node.uuid;
5241
5250
  }
5242
5251
  );
5243
5252
  bn(
@@ -5251,53 +5260,53 @@ const zr = {
5251
5260
  },
5252
5261
  { flush: "post" }
5253
5262
  );
5254
- const c = (p) => {
5255
- p.stopPropagation(), n("select", t.node);
5256
- }, d = (p) => {
5257
- p.stopPropagation(), n("delete", t.node);
5258
- }, h = (p) => p.type === "Mesh" || p.type === "Sprite" ? "🟦" : p.type === "Light" ? "💡" : "📦", m = (p) => p.name || `${p.type} (${p.id})`;
5259
- return (p, f) => {
5260
- const g = Cn("TreeItem", !0);
5263
+ const c = (f) => {
5264
+ f.stopPropagation(), n("select", t.node);
5265
+ }, h = (f) => {
5266
+ f.stopPropagation(), n("delete", t.node);
5267
+ }, d = (f) => f.type === "Mesh" || f.type === "Sprite" ? "🟦" : f.type === "Light" ? "💡" : "📦", g = (f) => f.name || `${f.type} (${f.id})`;
5268
+ return (f, m) => {
5269
+ const p = Cn("TreeItem", !0);
5261
5270
  return R(), P("div", {
5262
5271
  class: "tree-node",
5263
5272
  ref_key: "nodeRef",
5264
5273
  ref: s
5265
5274
  }, [
5266
5275
  C("div", {
5267
- class: ie(["tree-item", { selected: u.value }]),
5276
+ class: oe(["tree-item", { selected: u.value }]),
5268
5277
  onClick: c
5269
5278
  }, [
5270
5279
  l.value ? (R(), P("span", {
5271
5280
  key: 0,
5272
5281
  class: "toggle-icon",
5273
- onClick: f[0] || (f[0] = Vt((x) => In(o)(r.node.uuid), ["stop"]))
5274
- }, oe(a.value ? "▼" : "▶"), 1)) : (R(), P("span", zr)),
5275
- C("span", Gr, oe(h(r.node)), 1),
5276
- C("span", Kr, oe(m(r.node)), 1),
5282
+ onClick: m[0] || (m[0] = Jt((I) => In(o)(r.node.uuid), ["stop"]))
5283
+ }, ne(a.value ? "▼" : "▶"), 1)) : (R(), P("span", zr)),
5284
+ C("span", Gr, ne(d(r.node)), 1),
5285
+ C("span", Kr, ne(g(r.node)), 1),
5277
5286
  C("button", {
5278
5287
  class: "tree-delete",
5279
- onClick: Vt(d, ["stop"])
5288
+ onClick: Jt(h, ["stop"])
5280
5289
  }, "×")
5281
5290
  ], 2),
5282
- a.value && l.value ? (R(), P("div", Zr, [
5283
- (R(!0), P(ke, null, Dt(A.value, (x) => (R(), nt(g, {
5284
- key: x.uuid,
5285
- node: x,
5291
+ a.value && l.value ? (R(), P("div", Br, [
5292
+ (R(!0), P(Pe, null, Dt(A.value, (I) => (R(), nt(p, {
5293
+ key: I.uuid,
5294
+ node: I,
5286
5295
  "selected-object": r.selectedObject,
5287
5296
  version: r.version,
5288
- onSelect: f[1] || (f[1] = (I) => n("select", I)),
5289
- onDelete: f[2] || (f[2] = (I) => n("delete", I))
5297
+ onSelect: m[1] || (m[1] = (x) => n("select", x)),
5298
+ onDelete: m[2] || (m[2] = (x) => n("delete", x))
5290
5299
  }, null, 8, ["node", "selected-object", "version"]))), 128))
5291
- ])) : B("", !0)
5300
+ ])) : Z("", !0)
5292
5301
  ], 512);
5293
5302
  };
5294
5303
  }
5295
- }), ve = (r, e) => {
5304
+ }), Se = (r, e) => {
5296
5305
  const t = r.__vccOpts || r;
5297
5306
  for (const [n, s] of e)
5298
5307
  t[n] = s;
5299
5308
  return t;
5300
- }, Xr = /* @__PURE__ */ ve(Br, [["__scopeId", "data-v-5ad9c842"]]), qr = { class: "property-group" }, Vr = { class: "row" }, Jr = { class: "property-group" }, Qr = { class: "row" }, Yr = { class: "property-group" }, _r = { class: "row" }, $r = {
5309
+ }, Xr = /* @__PURE__ */ Se(Zr, [["__scopeId", "data-v-5ad9c842"]]), qr = { class: "property-group" }, Vr = { class: "row" }, Jr = { class: "property-group" }, Qr = { class: "row" }, Yr = { class: "property-group" }, _r = { class: "row" }, $r = {
5301
5310
  key: 0,
5302
5311
  class: "property-group light-group"
5303
5312
  }, ea = { class: "slider-row" }, ta = {
@@ -5306,7 +5315,7 @@ const zr = {
5306
5315
  }, sa = { class: "slider-row" }, na = { class: "slider-value" }, ia = { class: "slider-row" }, oa = { class: "slider-value" }, ra = { class: "slider-row" }, aa = { class: "slider-value" }, la = {
5307
5316
  key: 0,
5308
5317
  class: "material-hint"
5309
- }, Aa = /* @__PURE__ */ xe({
5318
+ }, Aa = /* @__PURE__ */ ve({
5310
5319
  __name: "TransformTab",
5311
5320
  props: {
5312
5321
  transform: {},
@@ -5314,72 +5323,72 @@ const zr = {
5314
5323
  },
5315
5324
  emits: ["propertyChange"],
5316
5325
  setup(r, { emit: e }) {
5317
- const t = r, n = e, s = () => n("propertyChange"), i = Jt({
5326
+ const t = r, n = e, s = () => n("propertyChange"), i = Qt({
5318
5327
  metalness: 0,
5319
5328
  roughness: 0.5,
5320
5329
  opacity: 1
5321
- }), o = W(!1), a = Jt({
5330
+ }), o = W(!1), a = Qt({
5322
5331
  intensity: 1
5323
5332
  });
5324
5333
  function l() {
5325
5334
  t.selectedObject && t.selectedObject.type === "DirectionalLight" && (t.selectedObject.intensity = a.intensity);
5326
5335
  }
5327
- function A(d) {
5328
- let h = null;
5329
- return d.traverse((m) => {
5330
- if (m.type === "Mesh" && !h) {
5331
- const p = m, f = Array.isArray(p.material) ? p.material : [p.material];
5332
- for (const g of f)
5333
- if (g && (g.type === "MeshStandardMaterial" || g.type === "MeshPhongMaterial")) {
5334
- const x = g;
5335
- h = {
5336
- metalness: x.metalness ?? 0,
5337
- roughness: x.roughness ?? 0.5,
5338
- opacity: g.opacity ?? 1
5336
+ function A(h) {
5337
+ let d = null;
5338
+ return h.traverse((g) => {
5339
+ if (g.type === "Mesh" && !d) {
5340
+ const f = g, m = Array.isArray(f.material) ? f.material : [f.material];
5341
+ for (const p of m)
5342
+ if (p && (p.type === "MeshStandardMaterial" || p.type === "MeshPhongMaterial")) {
5343
+ const I = p;
5344
+ d = {
5345
+ metalness: I.metalness ?? 0,
5346
+ roughness: I.roughness ?? 0.5,
5347
+ opacity: p.opacity ?? 1
5339
5348
  };
5340
5349
  break;
5341
5350
  }
5342
5351
  }
5343
- }), h;
5352
+ }), d;
5344
5353
  }
5345
- function u(d, h) {
5346
- let m = !1;
5347
- return d.traverse((p) => {
5348
- if (p.type === "Mesh") {
5349
- const f = p, g = Array.isArray(f.material) ? f.material : [f.material];
5350
- for (const x of g)
5351
- x && (x.type === "MeshStandardMaterial" || x.type === "MeshPhongMaterial") && (h.metalness !== void 0 && (x.metalness = h.metalness), h.roughness !== void 0 && (x.roughness = h.roughness), h.opacity !== void 0 && (x.opacity = h.opacity, x.transparent = h.opacity < 1), x.needsUpdate = !0, m = !0);
5354
+ function u(h, d) {
5355
+ let g = !1;
5356
+ return h.traverse((f) => {
5357
+ if (f.type === "Mesh") {
5358
+ const m = f, p = Array.isArray(m.material) ? m.material : [m.material];
5359
+ for (const I of p)
5360
+ I && (I.type === "MeshStandardMaterial" || I.type === "MeshPhongMaterial") && (d.metalness !== void 0 && (I.metalness = d.metalness), d.roughness !== void 0 && (I.roughness = d.roughness), d.opacity !== void 0 && (I.opacity = d.opacity, I.transparent = d.opacity < 1), I.needsUpdate = !0, g = !0);
5352
5361
  }
5353
- }), m;
5362
+ }), g;
5354
5363
  }
5355
5364
  function c() {
5356
5365
  if (t.selectedObject) {
5357
- const d = u(t.selectedObject, {
5366
+ const h = u(t.selectedObject, {
5358
5367
  metalness: i.metalness,
5359
5368
  roughness: i.roughness,
5360
5369
  opacity: i.opacity
5361
5370
  });
5362
- o.value = d;
5371
+ o.value = h;
5363
5372
  }
5364
5373
  }
5365
- return Pe(
5374
+ return be(
5366
5375
  () => t.selectedObject,
5367
- (d) => {
5368
- if (d) {
5369
- const h = A(d);
5370
- h ? (i.metalness = h.metalness, i.roughness = h.roughness, i.opacity = h.opacity, o.value = !0) : (i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1), d.type === "DirectionalLight" && (a.intensity = d.intensity ?? 1);
5376
+ (h) => {
5377
+ if (h) {
5378
+ const d = A(h);
5379
+ d ? (i.metalness = d.metalness, i.roughness = d.roughness, i.opacity = d.opacity, o.value = !0) : (i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1), h.type === "DirectionalLight" && (a.intensity = h.intensity ?? 1);
5371
5380
  } else
5372
5381
  i.metalness = 0, i.roughness = 0.5, i.opacity = 1, o.value = !1;
5373
5382
  },
5374
5383
  { immediate: !0 }
5375
- ), (d, h) => (R(), P("div", null, [
5384
+ ), (h, d) => (R(), P("div", null, [
5376
5385
  C("div", qr, [
5377
- h[17] || (h[17] = C("label", null, "位置", -1)),
5386
+ d[17] || (d[17] = C("label", null, "位置", -1)),
5378
5387
  C("div", Vr, [
5379
- h[14] || (h[14] = C("span", null, "X:", -1)),
5388
+ d[14] || (d[14] = C("span", null, "X:", -1)),
5380
5389
  k(C("input", {
5381
5390
  type: "number",
5382
- "onUpdate:modelValue": h[0] || (h[0] = (m) => r.transform.position.x = m),
5391
+ "onUpdate:modelValue": d[0] || (d[0] = (g) => r.transform.position.x = g),
5383
5392
  step: "0.01",
5384
5393
  onInput: s
5385
5394
  }, null, 544), [
@@ -5390,10 +5399,10 @@ const zr = {
5390
5399
  { number: !0 }
5391
5400
  ]
5392
5401
  ]),
5393
- h[15] || (h[15] = C("span", null, "Y:", -1)),
5402
+ d[15] || (d[15] = C("span", null, "Y:", -1)),
5394
5403
  k(C("input", {
5395
5404
  type: "number",
5396
- "onUpdate:modelValue": h[1] || (h[1] = (m) => r.transform.position.y = m),
5405
+ "onUpdate:modelValue": d[1] || (d[1] = (g) => r.transform.position.y = g),
5397
5406
  step: "0.01",
5398
5407
  onInput: s
5399
5408
  }, null, 544), [
@@ -5404,10 +5413,10 @@ const zr = {
5404
5413
  { number: !0 }
5405
5414
  ]
5406
5415
  ]),
5407
- h[16] || (h[16] = C("span", null, "Z:", -1)),
5416
+ d[16] || (d[16] = C("span", null, "Z:", -1)),
5408
5417
  k(C("input", {
5409
5418
  type: "number",
5410
- "onUpdate:modelValue": h[2] || (h[2] = (m) => r.transform.position.z = m),
5419
+ "onUpdate:modelValue": d[2] || (d[2] = (g) => r.transform.position.z = g),
5411
5420
  step: "0.01",
5412
5421
  onInput: s
5413
5422
  }, null, 544), [
@@ -5421,12 +5430,12 @@ const zr = {
5421
5430
  ])
5422
5431
  ]),
5423
5432
  C("div", Jr, [
5424
- h[21] || (h[21] = C("label", null, "旋转 (弧度)", -1)),
5433
+ d[21] || (d[21] = C("label", null, "旋转 (弧度)", -1)),
5425
5434
  C("div", Qr, [
5426
- h[18] || (h[18] = C("span", null, "X:", -1)),
5435
+ d[18] || (d[18] = C("span", null, "X:", -1)),
5427
5436
  k(C("input", {
5428
5437
  type: "number",
5429
- "onUpdate:modelValue": h[3] || (h[3] = (m) => r.transform.rotation.x = m),
5438
+ "onUpdate:modelValue": d[3] || (d[3] = (g) => r.transform.rotation.x = g),
5430
5439
  step: "0.01",
5431
5440
  onInput: s
5432
5441
  }, null, 544), [
@@ -5437,10 +5446,10 @@ const zr = {
5437
5446
  { number: !0 }
5438
5447
  ]
5439
5448
  ]),
5440
- h[19] || (h[19] = C("span", null, "Y:", -1)),
5449
+ d[19] || (d[19] = C("span", null, "Y:", -1)),
5441
5450
  k(C("input", {
5442
5451
  type: "number",
5443
- "onUpdate:modelValue": h[4] || (h[4] = (m) => r.transform.rotation.y = m),
5452
+ "onUpdate:modelValue": d[4] || (d[4] = (g) => r.transform.rotation.y = g),
5444
5453
  step: "0.01",
5445
5454
  onInput: s
5446
5455
  }, null, 544), [
@@ -5451,10 +5460,10 @@ const zr = {
5451
5460
  { number: !0 }
5452
5461
  ]
5453
5462
  ]),
5454
- h[20] || (h[20] = C("span", null, "Z:", -1)),
5463
+ d[20] || (d[20] = C("span", null, "Z:", -1)),
5455
5464
  k(C("input", {
5456
5465
  type: "number",
5457
- "onUpdate:modelValue": h[5] || (h[5] = (m) => r.transform.rotation.z = m),
5466
+ "onUpdate:modelValue": d[5] || (d[5] = (g) => r.transform.rotation.z = g),
5458
5467
  step: "0.01",
5459
5468
  onInput: s
5460
5469
  }, null, 544), [
@@ -5468,12 +5477,12 @@ const zr = {
5468
5477
  ])
5469
5478
  ]),
5470
5479
  C("div", Yr, [
5471
- h[25] || (h[25] = C("label", null, "缩放", -1)),
5480
+ d[25] || (d[25] = C("label", null, "缩放", -1)),
5472
5481
  C("div", _r, [
5473
- h[22] || (h[22] = C("span", null, "X:", -1)),
5482
+ d[22] || (d[22] = C("span", null, "X:", -1)),
5474
5483
  k(C("input", {
5475
5484
  type: "number",
5476
- "onUpdate:modelValue": h[6] || (h[6] = (m) => r.transform.scale.x = m),
5485
+ "onUpdate:modelValue": d[6] || (d[6] = (g) => r.transform.scale.x = g),
5477
5486
  step: "0.01",
5478
5487
  onInput: s
5479
5488
  }, null, 544), [
@@ -5484,10 +5493,10 @@ const zr = {
5484
5493
  { number: !0 }
5485
5494
  ]
5486
5495
  ]),
5487
- h[23] || (h[23] = C("span", null, "Y:", -1)),
5496
+ d[23] || (d[23] = C("span", null, "Y:", -1)),
5488
5497
  k(C("input", {
5489
5498
  type: "number",
5490
- "onUpdate:modelValue": h[7] || (h[7] = (m) => r.transform.scale.y = m),
5499
+ "onUpdate:modelValue": d[7] || (d[7] = (g) => r.transform.scale.y = g),
5491
5500
  step: "0.01",
5492
5501
  onInput: s
5493
5502
  }, null, 544), [
@@ -5498,10 +5507,10 @@ const zr = {
5498
5507
  { number: !0 }
5499
5508
  ]
5500
5509
  ]),
5501
- h[24] || (h[24] = C("span", null, "Z:", -1)),
5510
+ d[24] || (d[24] = C("span", null, "Z:", -1)),
5502
5511
  k(C("input", {
5503
5512
  type: "number",
5504
- "onUpdate:modelValue": h[8] || (h[8] = (m) => r.transform.scale.z = m),
5513
+ "onUpdate:modelValue": d[8] || (d[8] = (g) => r.transform.scale.z = g),
5505
5514
  step: "0.01",
5506
5515
  onInput: s
5507
5516
  }, null, 544), [
@@ -5515,15 +5524,15 @@ const zr = {
5515
5524
  ])
5516
5525
  ]),
5517
5526
  r.selectedObject && r.selectedObject.type === "DirectionalLight" ? (R(), P("div", $r, [
5518
- h[27] || (h[27] = C("label", null, "光源属性", -1)),
5527
+ d[27] || (d[27] = C("label", null, "光源属性", -1)),
5519
5528
  C("div", ea, [
5520
- h[26] || (h[26] = C("span", { class: "slider-label" }, "强度", -1)),
5529
+ d[26] || (d[26] = C("span", { class: "slider-label" }, "强度", -1)),
5521
5530
  k(C("input", {
5522
5531
  type: "range",
5523
5532
  min: "0",
5524
5533
  max: "10",
5525
5534
  step: "0.1",
5526
- "onUpdate:modelValue": h[9] || (h[9] = (m) => a.intensity = m),
5535
+ "onUpdate:modelValue": d[9] || (d[9] = (g) => a.intensity = g),
5527
5536
  onInput: l
5528
5537
  }, null, 544), [
5529
5538
  [
@@ -5538,7 +5547,7 @@ const zr = {
5538
5547
  min: "0",
5539
5548
  max: "100",
5540
5549
  step: "0.1",
5541
- "onUpdate:modelValue": h[10] || (h[10] = (m) => a.intensity = m),
5550
+ "onUpdate:modelValue": d[10] || (d[10] = (g) => a.intensity = g),
5542
5551
  class: "intensity-input",
5543
5552
  onInput: l
5544
5553
  }, null, 544), [
@@ -5550,17 +5559,17 @@ const zr = {
5550
5559
  ]
5551
5560
  ])
5552
5561
  ])
5553
- ])) : B("", !0),
5562
+ ])) : Z("", !0),
5554
5563
  r.selectedObject ? (R(), P("div", ta, [
5555
- h[31] || (h[31] = C("label", null, "材质", -1)),
5564
+ d[31] || (d[31] = C("label", null, "材质", -1)),
5556
5565
  C("div", sa, [
5557
- h[28] || (h[28] = C("span", { class: "slider-label" }, "金属度", -1)),
5566
+ d[28] || (d[28] = C("span", { class: "slider-label" }, "金属度", -1)),
5558
5567
  k(C("input", {
5559
5568
  type: "range",
5560
5569
  min: "0",
5561
5570
  max: "1",
5562
5571
  step: "0.01",
5563
- "onUpdate:modelValue": h[11] || (h[11] = (m) => i.metalness = m),
5572
+ "onUpdate:modelValue": d[11] || (d[11] = (g) => i.metalness = g),
5564
5573
  onInput: c
5565
5574
  }, null, 544), [
5566
5575
  [
@@ -5570,16 +5579,16 @@ const zr = {
5570
5579
  { number: !0 }
5571
5580
  ]
5572
5581
  ]),
5573
- C("span", na, oe(i.metalness.toFixed(2)), 1)
5582
+ C("span", na, ne(i.metalness.toFixed(2)), 1)
5574
5583
  ]),
5575
5584
  C("div", ia, [
5576
- h[29] || (h[29] = C("span", { class: "slider-label" }, "粗糙度", -1)),
5585
+ d[29] || (d[29] = C("span", { class: "slider-label" }, "粗糙度", -1)),
5577
5586
  k(C("input", {
5578
5587
  type: "range",
5579
5588
  min: "0",
5580
5589
  max: "1",
5581
5590
  step: "0.01",
5582
- "onUpdate:modelValue": h[12] || (h[12] = (m) => i.roughness = m),
5591
+ "onUpdate:modelValue": d[12] || (d[12] = (g) => i.roughness = g),
5583
5592
  onInput: c
5584
5593
  }, null, 544), [
5585
5594
  [
@@ -5589,16 +5598,16 @@ const zr = {
5589
5598
  { number: !0 }
5590
5599
  ]
5591
5600
  ]),
5592
- C("span", oa, oe(i.roughness.toFixed(2)), 1)
5601
+ C("span", oa, ne(i.roughness.toFixed(2)), 1)
5593
5602
  ]),
5594
5603
  C("div", ra, [
5595
- h[30] || (h[30] = C("span", { class: "slider-label" }, "透明度", -1)),
5604
+ d[30] || (d[30] = C("span", { class: "slider-label" }, "透明度", -1)),
5596
5605
  k(C("input", {
5597
5606
  type: "range",
5598
5607
  min: "0",
5599
5608
  max: "1",
5600
5609
  step: "0.01",
5601
- "onUpdate:modelValue": h[13] || (h[13] = (m) => i.opacity = m),
5610
+ "onUpdate:modelValue": d[13] || (d[13] = (g) => i.opacity = g),
5602
5611
  onInput: c
5603
5612
  }, null, 544), [
5604
5613
  [
@@ -5608,13 +5617,13 @@ const zr = {
5608
5617
  { number: !0 }
5609
5618
  ]
5610
5619
  ]),
5611
- C("span", aa, oe(i.opacity.toFixed(2)), 1)
5620
+ C("span", aa, ne(i.opacity.toFixed(2)), 1)
5612
5621
  ]),
5613
- o.value ? B("", !0) : (R(), P("div", la, " ⚠️ 当前材质不支持金属度/粗糙度(仅支持 Standard/Phong) "))
5614
- ])) : B("", !0)
5622
+ o.value ? Z("", !0) : (R(), P("div", la, " ⚠️ 当前材质不支持金属度/粗糙度(仅支持 Standard/Phong) "))
5623
+ ])) : Z("", !0)
5615
5624
  ]));
5616
5625
  }
5617
- }), ca = /* @__PURE__ */ ve(Aa, [["__scopeId", "data-v-4cecf018"]]), ua = { class: "userdata-tab" }, da = { class: "property-group userdata-group" }, ha = { class: "userdata-add-row" }, fa = ["onKeyup"], pa = {
5626
+ }), ca = /* @__PURE__ */ Se(Aa, [["__scopeId", "data-v-4cecf018"]]), ua = { class: "userdata-tab" }, da = { class: "property-group userdata-group" }, ha = { class: "userdata-add-row" }, fa = ["onKeyup"], pa = {
5618
5627
  key: 0,
5619
5628
  class: "userdata-list"
5620
5629
  }, ma = { class: "ud-key" }, ga = {
@@ -5627,40 +5636,40 @@ const zr = {
5627
5636
  }, ya = { class: "ud-json-actions" }, xa = ["onClick"], va = ["onClick"], Sa = {
5628
5637
  key: 1,
5629
5638
  class: "userdata-empty"
5630
- }, Ta = /* @__PURE__ */ xe({
5639
+ }, Ta = /* @__PURE__ */ ve({
5631
5640
  __name: "UserDataTab",
5632
5641
  props: {
5633
5642
  selectedObject: {}
5634
5643
  },
5635
5644
  setup(r) {
5636
5645
  const e = r, t = W(""), n = W(""), s = W(null), i = W(""), o = W(null), a = W([]);
5637
- function l(I) {
5638
- if (I === null) return "null";
5639
- if (I === void 0) return "undefined";
5640
- if (Array.isArray(I)) return "array";
5641
- const y = typeof I;
5646
+ function l(x) {
5647
+ if (x === null) return "null";
5648
+ if (x === void 0) return "undefined";
5649
+ if (Array.isArray(x)) return "array";
5650
+ const y = typeof x;
5642
5651
  return y === "object" ? "object" : y === "number" ? "number" : y === "boolean" ? "boolean" : "string";
5643
5652
  }
5644
- function A(I) {
5653
+ function A(x) {
5645
5654
  const y = [];
5646
- if (I.userData)
5647
- for (const [S, M] of Object.entries(I.userData))
5648
- typeof S == "string" && !S.startsWith("_") && y.push({
5649
- key: S,
5655
+ if (x.userData)
5656
+ for (const [v, M] of Object.entries(x.userData))
5657
+ typeof v == "string" && !v.startsWith("_") && y.push({
5658
+ key: v,
5650
5659
  value: typeof M == "object" ? JSON.stringify(M) : String(M),
5651
5660
  rawType: l(M)
5652
5661
  });
5653
5662
  a.value = y;
5654
5663
  }
5655
- function u(I) {
5656
- const y = I.trim();
5664
+ function u(x) {
5665
+ const y = x.trim();
5657
5666
  if (y === "true") return !0;
5658
5667
  if (y === "false") return !1;
5659
5668
  if (y === "null") return null;
5660
5669
  if (y === "undefined") return;
5661
- const S = Number(y);
5662
- if (y !== "" && !isNaN(S))
5663
- return String(S) !== y ? y : S;
5670
+ const v = Number(y);
5671
+ if (y !== "" && !isNaN(v))
5672
+ return String(v) !== y ? y : v;
5664
5673
  if (y.startsWith("{") && y.endsWith("}") || y.startsWith("[") && y.endsWith("]"))
5665
5674
  try {
5666
5675
  return JSON.parse(y);
@@ -5670,85 +5679,85 @@ const zr = {
5670
5679
  }
5671
5680
  function c() {
5672
5681
  if (!e.selectedObject || !t.value.trim()) return;
5673
- const I = t.value.trim();
5674
- if (I === "isMovable") {
5682
+ const x = t.value.trim();
5683
+ if (x === "isMovable") {
5675
5684
  t.value = "";
5676
5685
  return;
5677
5686
  }
5678
5687
  const y = u(n.value);
5679
- e.selectedObject.userData[I] = y, A(e.selectedObject), t.value = "", n.value = "";
5688
+ e.selectedObject.userData[x] = y, A(e.selectedObject), t.value = "", n.value = "";
5680
5689
  }
5681
- function d(I, y) {
5682
- e.selectedObject && (delete e.selectedObject.userData[I], A(e.selectedObject));
5690
+ function h(x, y) {
5691
+ e.selectedObject && (delete e.selectedObject.userData[x], A(e.selectedObject));
5683
5692
  }
5684
- function h(I) {
5685
- return I.length <= 28 ? I : I.substring(0, 28) + "…";
5693
+ function d(x) {
5694
+ return x.length <= 28 ? x : x.substring(0, 28) + "…";
5686
5695
  }
5687
- function m(I) {
5688
- s.value = I;
5696
+ function g(x) {
5697
+ s.value = x;
5689
5698
  const y = e.selectedObject;
5690
5699
  if (!y) return;
5691
- const S = y.userData[I];
5700
+ const v = y.userData[x];
5692
5701
  try {
5693
- i.value = JSON.stringify(S, null, 2);
5702
+ i.value = JSON.stringify(v, null, 2);
5694
5703
  } catch {
5695
- i.value = String(S);
5704
+ i.value = String(v);
5696
5705
  }
5697
- p();
5706
+ f();
5698
5707
  }
5699
- function p() {
5700
- const I = i.value.trim();
5701
- if (!I) {
5708
+ function f() {
5709
+ const x = i.value.trim();
5710
+ if (!x) {
5702
5711
  o.value = null;
5703
5712
  return;
5704
5713
  }
5705
- if (!I.startsWith("{") && !I.startsWith("[")) {
5714
+ if (!x.startsWith("{") && !x.startsWith("[")) {
5706
5715
  o.value = "提示:当前输入不是 JSON 格式,将作为普通字符串保存";
5707
5716
  return;
5708
5717
  }
5709
5718
  try {
5710
- JSON.parse(I), o.value = null;
5719
+ JSON.parse(x), o.value = null;
5711
5720
  } catch (y) {
5712
5721
  o.value = "JSON 格式错误:" + y.message;
5713
5722
  }
5714
5723
  }
5715
- function f(I) {
5724
+ function m(x) {
5716
5725
  const y = e.selectedObject;
5717
5726
  if (!y) return;
5718
- const S = i.value.trim();
5727
+ const v = i.value.trim();
5719
5728
  try {
5720
- const M = JSON.parse(S);
5721
- y.userData[I] = M, A(y), s.value = null, i.value = "";
5729
+ const M = JSON.parse(v);
5730
+ y.userData[x] = M, A(y), s.value = null, i.value = "";
5722
5731
  } catch {
5723
- y.userData[I] = S, A(y), s.value = null, i.value = "";
5732
+ y.userData[x] = v, A(y), s.value = null, i.value = "";
5724
5733
  }
5725
5734
  }
5726
- function g() {
5735
+ function p() {
5727
5736
  s.value = null, i.value = "";
5728
5737
  }
5729
- function x() {
5730
- const I = e.selectedObject;
5731
- if (!I) return;
5738
+ function I() {
5739
+ const x = e.selectedObject;
5740
+ if (!x) return;
5732
5741
  const y = Ho();
5733
- y && (I.userData.closeUpView = {
5742
+ y && (x.userData.closeUpView = {
5734
5743
  x: y.position.x,
5735
5744
  y: y.position.y,
5736
5745
  z: y.position.z
5737
- }, A(I));
5746
+ }, A(x));
5738
5747
  }
5739
- return Pe(
5748
+ return be(
5740
5749
  () => e.selectedObject,
5741
- (I) => {
5742
- I ? A(I) : a.value = [], s.value = null, i.value = "";
5750
+ (x) => {
5751
+ x ? A(x) : a.value = [], s.value = null, i.value = "";
5743
5752
  },
5744
5753
  { immediate: !0 }
5745
- ), (I, y) => (R(), P("div", ua, [
5754
+ ), (x, y) => (R(), P("div", ua, [
5746
5755
  C("div", da, [
5747
5756
  y[3] || (y[3] = C("label", null, "userData 属性", -1)),
5748
5757
  C("div", ha, [
5749
5758
  k(C("input", {
5750
5759
  type: "text",
5751
- "onUpdate:modelValue": y[0] || (y[0] = (S) => t.value = S),
5760
+ "onUpdate:modelValue": y[0] || (y[0] = (v) => t.value = v),
5752
5761
  placeholder: "属性名",
5753
5762
  class: "ud-input",
5754
5763
  onKeyup: ze(c, ["enter"])
@@ -5756,10 +5765,10 @@ const zr = {
5756
5765
  [D, t.value]
5757
5766
  ]),
5758
5767
  k(C("textarea", {
5759
- "onUpdate:modelValue": y[1] || (y[1] = (S) => n.value = S),
5768
+ "onUpdate:modelValue": y[1] || (y[1] = (v) => n.value = v),
5760
5769
  placeholder: "值",
5761
5770
  class: "ud-input ud-textarea",
5762
- onKeyup: ze(Vt(c, ["prevent"]), ["enter"])
5771
+ onKeyup: ze(Jt(c, ["prevent"]), ["enter"])
5763
5772
  }, null, 40, fa), [
5764
5773
  [D, n.value]
5765
5774
  ]),
@@ -5770,29 +5779,29 @@ const zr = {
5770
5779
  }, " + ")
5771
5780
  ]),
5772
5781
  a.value.length > 0 ? (R(), P("div", pa, [
5773
- (R(!0), P(ke, null, Dt(a.value, (S, M) => (R(), P("div", {
5774
- key: S.key,
5775
- class: ie(["userdata-item", {
5776
- readonly: S.key === "isMovable",
5777
- "editing-json": s.value === S.key
5782
+ (R(!0), P(Pe, null, Dt(a.value, (v, M) => (R(), P("div", {
5783
+ key: v.key,
5784
+ class: oe(["userdata-item", {
5785
+ readonly: v.key === "isMovable",
5786
+ "editing-json": s.value === v.key
5778
5787
  }])
5779
5788
  }, [
5780
- C("span", ma, oe(S.key), 1),
5781
- S.key === "isMovable" ? (R(), P("span", ga, oe(String(S.value)) + " 🔒 ", 1)) : S.key !== "isMovable" ? (R(), P(ke, { key: 1 }, [
5782
- s.value !== S.key ? (R(), P(ke, { key: 0 }, [
5783
- C("span", ba, oe(h(S.value)), 1),
5789
+ C("span", ma, ne(v.key), 1),
5790
+ v.key === "isMovable" ? (R(), P("span", ga, ne(String(v.value)) + " 🔒 ", 1)) : v.key !== "isMovable" ? (R(), P(Pe, { key: 1 }, [
5791
+ s.value !== v.key ? (R(), P(Pe, { key: 0 }, [
5792
+ C("span", ba, ne(d(v.value)), 1),
5784
5793
  C("button", {
5785
5794
  class: "ud-btn edit-json-btn",
5786
5795
  title: "编辑对象",
5787
- onClick: (L) => m(S.key)
5796
+ onClick: (L) => g(v.key)
5788
5797
  }, " ✎ ", 8, Ca)
5789
- ], 64)) : (R(), P(ke, { key: 1 }, [
5790
- o.value ? (R(), P("div", Ia, " ⚠ " + oe(o.value), 1)) : B("", !0),
5798
+ ], 64)) : (R(), P(Pe, { key: 1 }, [
5799
+ o.value ? (R(), P("div", Ia, " ⚠ " + ne(o.value), 1)) : Z("", !0),
5791
5800
  k(C("textarea", {
5792
5801
  "onUpdate:modelValue": y[2] || (y[2] = (L) => i.value = L),
5793
- class: ie(["ud-json-textarea", { "has-error": o.value }]),
5802
+ class: oe(["ud-json-textarea", { "has-error": o.value }]),
5794
5803
  rows: "3",
5795
- onInput: p
5804
+ onInput: f
5796
5805
  }, null, 34), [
5797
5806
  [D, i.value]
5798
5807
  ]),
@@ -5800,187 +5809,212 @@ const zr = {
5800
5809
  C("button", {
5801
5810
  class: "ud-btn apply-btn",
5802
5811
  title: "应用修改",
5803
- onClick: (L) => f(S.key)
5812
+ onClick: (L) => m(v.key)
5804
5813
  }, " ✓ ", 8, xa),
5805
5814
  C("button", {
5806
5815
  class: "ud-btn cancel-btn",
5807
5816
  title: "取消编辑",
5808
- onClick: g
5817
+ onClick: p
5809
5818
  }, " ✕ ")
5810
5819
  ])
5811
5820
  ], 64)),
5812
- s.value !== S.key ? (R(), P("button", {
5821
+ s.value !== v.key ? (R(), P("button", {
5813
5822
  key: 2,
5814
5823
  class: "ud-btn del-btn",
5815
5824
  title: "删除",
5816
- onClick: (L) => d(S.key)
5817
- }, " ✕ ", 8, va)) : B("", !0)
5818
- ], 64)) : B("", !0)
5825
+ onClick: (L) => h(v.key)
5826
+ }, " ✕ ", 8, va)) : Z("", !0)
5827
+ ], 64)) : Z("", !0)
5819
5828
  ], 2))), 128))
5820
5829
  ])) : (R(), P("div", Sa, "暂无自定义数据")),
5821
5830
  C("button", {
5822
5831
  class: "get-camera-btn",
5823
- onClick: x
5832
+ onClick: I
5824
5833
  }, " 添加当前相机位置 ")
5825
5834
  ])
5826
5835
  ]));
5827
5836
  }
5828
- }), Ma = /* @__PURE__ */ ve(Ta, [["__scopeId", "data-v-4e117415"]]), wa = { class: "datapanel-tab" }, Ra = { class: "property-group" }, Ea = { class: "dp-section" }, ka = { class: "dp-visibility-row" }, Pa = { class: "dp-toggle" }, La = { class: "dp-visibility-text" }, Na = { class: "dp-section" }, Oa = { class: "dp-section" }, Da = { class: "dp-list" }, Wa = ["onUpdate:modelValue"], ja = ["onUpdate:modelValue"], Fa = ["onUpdate:modelValue"], Ua = ["onUpdate:modelValue"], Ha = ["onClick"], za = { class: "dp-add-row" }, Ga = /* @__PURE__ */ xe({
5837
+ }), Ma = /* @__PURE__ */ Se(Ta, [["__scopeId", "data-v-4e117415"]]), wa = { class: "datapanel-tab" }, Ra = { class: "property-group" }, Ea = { class: "dp-section" }, ka = { class: "dp-visibility-row" }, Pa = { class: "dp-toggle" }, La = { class: "dp-visibility-text" }, Na = { class: "dp-section" }, Oa = { class: "dp-section" }, Da = { class: "dp-size-row" }, Wa = { class: "dp-size-value" }, ja = { class: "dp-section" }, Fa = { class: "dp-list" }, Ua = ["onUpdate:modelValue"], Ha = ["onUpdate:modelValue"], za = ["onUpdate:modelValue"], Ga = ["onUpdate:modelValue"], Ka = ["onClick"], Ba = { class: "dp-add-row" }, Za = /* @__PURE__ */ ve({
5829
5838
  __name: "DataPanelTab",
5830
5839
  props: {
5831
5840
  selectedObject: {}
5832
5841
  },
5833
5842
  setup(r) {
5834
- const e = r, t = W(""), n = W([]), s = W(!0), i = W(""), o = W(""), a = W(""), l = W("");
5835
- let A = c(), u = !1;
5836
- function c() {
5837
- const p = e.selectedObject;
5838
- return p ? cs(Ot(p)) : null;
5843
+ const e = r, t = W(""), n = W([]), s = W(!0), i = W(0.1), o = W(""), a = W(""), l = W(""), A = W("");
5844
+ let u = h(), c = !1;
5845
+ function h() {
5846
+ const m = e.selectedObject;
5847
+ return m ? Wt(Ot(m)) : null;
5839
5848
  }
5840
- Pe(s, (p) => {
5841
- u || !A || (A.visible = p);
5849
+ be(s, (m) => {
5850
+ c || !u || (u.visible = m);
5851
+ }), be(i, (m) => {
5852
+ c || !u || u.setOffsetY(m);
5842
5853
  });
5843
5854
  function d() {
5844
- u || !A || (A.setTitle(t.value), A.setItems([...n.value]));
5855
+ c || !u || (u.setTitle(t.value), u.setItems([...n.value]));
5845
5856
  }
5846
- Pe(t, () => d()), Pe(n, () => d(), { deep: !0 });
5847
- function h(p) {
5848
- n.value = n.value.filter((f, g) => g !== p), d();
5857
+ be(t, () => d()), be(n, () => d(), { deep: !0 });
5858
+ function g(m) {
5859
+ n.value = n.value.filter((p, I) => I !== m), d();
5849
5860
  }
5850
- function m() {
5851
- !i.value.trim() || !o.value.trim() || (n.value = [
5861
+ function f() {
5862
+ !o.value.trim() || !a.value.trim() || (n.value = [
5852
5863
  ...n.value,
5853
5864
  {
5854
- label: i.value.trim(),
5855
- value: o.value.trim(),
5856
- unit: a.value.trim() || void 0,
5857
- code: l.value.trim() || void 0
5865
+ label: o.value.trim(),
5866
+ value: a.value.trim(),
5867
+ unit: l.value.trim() || void 0,
5868
+ code: A.value.trim() || void 0
5858
5869
  }
5859
- ], d(), i.value = "", o.value = "", a.value = "", l.value = "");
5870
+ ], d(), o.value = "", a.value = "", l.value = "", A.value = "");
5860
5871
  }
5861
- return Pe(
5872
+ return be(
5862
5873
  () => e.selectedObject,
5863
5874
  () => {
5864
- u = !0, A = c(), A ? (t.value = A.getTitle(), n.value = A.getItems(), s.value = A.visible) : (t.value = "", n.value = [], s.value = !0), i.value = "", o.value = "", a.value = "", setTimeout(() => {
5865
- u = !1;
5875
+ c = !0, u = h(), u ? (t.value = u.getTitle(), n.value = u.getItems(), s.value = u.visible, i.value = u.getOffsetY()) : (t.value = "", n.value = [], s.value = !0, i.value = 0.1), o.value = "", a.value = "", l.value = "", A.value = "", setTimeout(() => {
5876
+ c = !1;
5866
5877
  }, 0);
5867
5878
  },
5868
5879
  { immediate: !0 }
5869
- ), (p, f) => (R(), P("div", wa, [
5880
+ ), (m, p) => (R(), P("div", wa, [
5870
5881
  C("div", Ra, [
5871
- f[10] || (f[10] = C("label", null, "📊 数据面板", -1)),
5882
+ p[14] || (p[14] = C("label", null, "📊 数据面板", -1)),
5872
5883
  C("div", Ea, [
5873
- f[7] || (f[7] = C("span", { class: "dp-label-sm" }, "可见性", -1)),
5884
+ p[8] || (p[8] = C("span", { class: "dp-label-sm" }, "可见性", -1)),
5874
5885
  C("div", ka, [
5875
5886
  C("label", Pa, [
5876
5887
  k(C("input", {
5877
5888
  type: "checkbox",
5878
- "onUpdate:modelValue": f[0] || (f[0] = (g) => s.value = g)
5889
+ "onUpdate:modelValue": p[0] || (p[0] = (I) => s.value = I)
5879
5890
  }, null, 512), [
5880
5891
  [yn, s.value]
5881
5892
  ]),
5882
- f[6] || (f[6] = C("span", { class: "dp-toggle-slider" }, null, -1))
5893
+ p[7] || (p[7] = C("span", { class: "dp-toggle-slider" }, null, -1))
5883
5894
  ]),
5884
- C("span", La, oe(s.value ? "显示中" : "已隐藏"), 1)
5895
+ C("span", La, ne(s.value ? "显示中" : "已隐藏"), 1)
5885
5896
  ])
5886
5897
  ]),
5887
5898
  C("div", Na, [
5888
- f[8] || (f[8] = C("span", { class: "dp-label-sm" }, "标题", -1)),
5899
+ p[9] || (p[9] = C("span", { class: "dp-label-sm" }, "标题", -1)),
5889
5900
  k(C("input", {
5890
5901
  type: "text",
5891
5902
  class: "dp-input",
5892
- "onUpdate:modelValue": f[1] || (f[1] = (g) => t.value = g),
5903
+ "onUpdate:modelValue": p[1] || (p[1] = (I) => t.value = I),
5893
5904
  placeholder: "面板标题"
5894
5905
  }, null, 512), [
5895
5906
  [D, t.value]
5896
5907
  ])
5897
5908
  ]),
5898
5909
  C("div", Oa, [
5899
- f[9] || (f[9] = C("span", { class: "dp-label-sm" }, "数据项", -1)),
5910
+ p[12] || (p[12] = C("span", { class: "dp-label-sm" }, "面板离模型距离", -1)),
5900
5911
  C("div", Da, [
5901
- (R(!0), P(ke, null, Dt(n.value, (g, x) => (R(), P("div", {
5912
+ p[10] || (p[10] = C("span", { class: "dp-range-label" }, "", -1)),
5913
+ k(C("input", {
5914
+ type: "range",
5915
+ class: "dp-range",
5916
+ min: "-0.5",
5917
+ max: "0.5",
5918
+ step: "0.01",
5919
+ "onUpdate:modelValue": p[2] || (p[2] = (I) => i.value = I)
5920
+ }, null, 512), [
5921
+ [
5922
+ D,
5923
+ i.value,
5924
+ void 0,
5925
+ { number: !0 }
5926
+ ]
5927
+ ]),
5928
+ p[11] || (p[11] = C("span", { class: "dp-range-label" }, "远", -1)),
5929
+ C("span", Wa, ne((i.value * 100).toFixed(0)), 1)
5930
+ ])
5931
+ ]),
5932
+ C("div", ja, [
5933
+ p[13] || (p[13] = C("span", { class: "dp-label-sm" }, "数据项", -1)),
5934
+ C("div", Fa, [
5935
+ (R(!0), P(Pe, null, Dt(n.value, (I, x) => (R(), P("div", {
5902
5936
  key: x,
5903
5937
  class: "dp-item"
5904
5938
  }, [
5905
5939
  k(C("input", {
5906
5940
  type: "text",
5907
5941
  class: "dp-input dp-input-sm",
5908
- "onUpdate:modelValue": (I) => g.label = I,
5942
+ "onUpdate:modelValue": (y) => I.label = y,
5909
5943
  placeholder: "标签"
5910
- }, null, 8, Wa), [
5911
- [D, g.label]
5944
+ }, null, 8, Ua), [
5945
+ [D, I.label]
5912
5946
  ]),
5913
5947
  k(C("input", {
5914
5948
  type: "text",
5915
5949
  class: "dp-input dp-input-sm",
5916
- "onUpdate:modelValue": (I) => g.value = I,
5950
+ "onUpdate:modelValue": (y) => I.value = y,
5917
5951
  placeholder: "值"
5918
- }, null, 8, ja), [
5919
- [D, g.value]
5952
+ }, null, 8, Ha), [
5953
+ [D, I.value]
5920
5954
  ]),
5921
5955
  k(C("input", {
5922
5956
  type: "text",
5923
5957
  class: "dp-input dp-input-xs",
5924
- "onUpdate:modelValue": (I) => g.unit = I,
5958
+ "onUpdate:modelValue": (y) => I.unit = y,
5925
5959
  placeholder: "单位"
5926
- }, null, 8, Fa), [
5927
- [D, g.unit]
5960
+ }, null, 8, za), [
5961
+ [D, I.unit]
5928
5962
  ]),
5929
5963
  k(C("input", {
5930
5964
  type: "text",
5931
5965
  class: "dp-input dp-input-xs",
5932
- "onUpdate:modelValue": (I) => g.code = I,
5966
+ "onUpdate:modelValue": (y) => I.code = y,
5933
5967
  placeholder: "编码"
5934
- }, null, 8, Ua), [
5935
- [D, g.code]
5968
+ }, null, 8, Ga), [
5969
+ [D, I.code]
5936
5970
  ]),
5937
5971
  C("button", {
5938
5972
  class: "dp-btn dp-btn-del",
5939
- onClick: (I) => h(x),
5973
+ onClick: (y) => g(x),
5940
5974
  title: "删除此项"
5941
- }, "✕", 8, Ha)
5975
+ }, "✕", 8, Ka)
5942
5976
  ]))), 128))
5943
5977
  ]),
5944
- C("div", za, [
5978
+ C("div", Ba, [
5945
5979
  k(C("input", {
5946
5980
  type: "text",
5947
5981
  class: "dp-input dp-input-sm",
5948
- "onUpdate:modelValue": f[2] || (f[2] = (g) => i.value = g),
5982
+ "onUpdate:modelValue": p[3] || (p[3] = (I) => o.value = I),
5949
5983
  placeholder: "标签",
5950
- onKeyup: ze(m, ["enter"])
5984
+ onKeyup: ze(f, ["enter"])
5951
5985
  }, null, 544), [
5952
- [D, i.value]
5986
+ [D, o.value]
5953
5987
  ]),
5954
5988
  k(C("input", {
5955
5989
  type: "text",
5956
5990
  class: "dp-input dp-input-sm",
5957
- "onUpdate:modelValue": f[3] || (f[3] = (g) => o.value = g),
5991
+ "onUpdate:modelValue": p[4] || (p[4] = (I) => a.value = I),
5958
5992
  placeholder: "值",
5959
- onKeyup: ze(m, ["enter"])
5993
+ onKeyup: ze(f, ["enter"])
5960
5994
  }, null, 544), [
5961
- [D, o.value]
5995
+ [D, a.value]
5962
5996
  ]),
5963
5997
  k(C("input", {
5964
5998
  type: "text",
5965
5999
  class: "dp-input dp-input-xs",
5966
- "onUpdate:modelValue": f[4] || (f[4] = (g) => a.value = g),
6000
+ "onUpdate:modelValue": p[5] || (p[5] = (I) => l.value = I),
5967
6001
  placeholder: "单位",
5968
- onKeyup: ze(m, ["enter"])
6002
+ onKeyup: ze(f, ["enter"])
5969
6003
  }, null, 544), [
5970
- [D, a.value]
6004
+ [D, l.value]
5971
6005
  ]),
5972
6006
  k(C("input", {
5973
6007
  type: "text",
5974
6008
  class: "dp-input dp-input-xs",
5975
- "onUpdate:modelValue": f[5] || (f[5] = (g) => l.value = g),
6009
+ "onUpdate:modelValue": p[6] || (p[6] = (I) => A.value = I),
5976
6010
  placeholder: "编码",
5977
- onKeyup: ze(m, ["enter"])
6011
+ onKeyup: ze(f, ["enter"])
5978
6012
  }, null, 544), [
5979
- [D, l.value]
6013
+ [D, A.value]
5980
6014
  ]),
5981
6015
  C("button", {
5982
6016
  class: "dp-btn dp-btn-add",
5983
- onClick: m,
6017
+ onClick: f,
5984
6018
  title: "添加"
5985
6019
  }, "+")
5986
6020
  ])
@@ -5988,8 +6022,8 @@ const zr = {
5988
6022
  ])
5989
6023
  ]));
5990
6024
  }
5991
- }), Ka = /* @__PURE__ */ ve(Ga, [["__scopeId", "data-v-b5a688e1"]]);
5992
- function Za(r) {
6025
+ }), Xa = /* @__PURE__ */ Se(Za, [["__scopeId", "data-v-0e6261f3"]]);
6026
+ function qa(r) {
5993
6027
  const e = W(/* @__PURE__ */ new Set()), t = (s) => {
5994
6028
  const i = new Set(e.value);
5995
6029
  i.has(s) ? i.delete(s) : i.add(s), e.value = i;
@@ -6001,7 +6035,7 @@ function Za(r) {
6001
6035
  i.add(o.uuid), o = o.parent;
6002
6036
  e.value = i;
6003
6037
  };
6004
- return Pe(
6038
+ return be(
6005
6039
  r,
6006
6040
  (s) => {
6007
6041
  s && n(s);
@@ -6009,22 +6043,22 @@ function Za(r) {
6009
6043
  { immediate: !0 }
6010
6044
  ), { expandedSet: e, toggleExpand: t };
6011
6045
  }
6012
- const Ba = {
6046
+ const Va = {
6013
6047
  key: 0,
6014
6048
  class: "property-panel"
6015
- }, Xa = { class: "property-group tree-group" }, qa = { class: "tree-container" }, Va = {
6049
+ }, Ja = { class: "property-group tree-group" }, Qa = { class: "tree-container" }, Ya = {
6016
6050
  key: 0,
6017
6051
  class: "tree-empty"
6018
- }, Ja = { class: "property-group" }, Qa = { class: "transform-mode-row" }, Ya = {
6052
+ }, _a = { class: "property-group" }, $a = { class: "transform-mode-row" }, el = {
6019
6053
  key: 0,
6020
6054
  class: "tabs"
6021
- }, _a = {
6055
+ }, tl = {
6022
6056
  key: 1,
6023
6057
  class: "tab-content"
6024
- }, $a = {
6058
+ }, sl = {
6025
6059
  key: 1,
6026
6060
  class: "property-panel empty"
6027
- }, el = /* @__PURE__ */ xe({
6061
+ }, nl = /* @__PURE__ */ ve({
6028
6062
  __name: "index",
6029
6063
  props: {
6030
6064
  transform: {},
@@ -6034,134 +6068,134 @@ const Ba = {
6034
6068
  emits: ["propertyChange", "treeSelect", "treeDelete", "transformModeChange"],
6035
6069
  setup(r, { emit: e }) {
6036
6070
  const t = r, n = e, s = W("translate");
6037
- function i(m) {
6038
- s.value = m, n("transformModeChange", m);
6071
+ function i(g) {
6072
+ s.value = g, n("transformModeChange", g);
6039
6073
  }
6040
6074
  const o = () => n("propertyChange"), a = W("transform"), l = $e(() => {
6041
- var m;
6042
- return !!(t.selectedObject && ((m = t.selectedObject.userData) != null && m._hasDataPanel));
6043
- }), A = W(0), u = xn(t, "selectedObject"), { expandedSet: c, toggleExpand: d } = Za(u);
6044
- vn("treeExpand", { expandedSet: c, toggleExpand: d });
6045
- const h = (m) => {
6046
- A.value++, n("treeDelete", m);
6075
+ var g;
6076
+ return !!(t.selectedObject && ((g = t.selectedObject.userData) != null && g._hasDataPanel));
6077
+ }), A = W(0), u = xn(t, "selectedObject"), { expandedSet: c, toggleExpand: h } = qa(u);
6078
+ vn("treeExpand", { expandedSet: c, toggleExpand: h });
6079
+ const d = (g) => {
6080
+ A.value++, n("treeDelete", g);
6047
6081
  };
6048
- return (m, p) => r.transform ? (R(), P("div", Ba, [
6049
- C("div", Xa, [
6050
- p[7] || (p[7] = C("label", null, "场景物体", -1)),
6051
- C("div", qa, [
6052
- (R(!0), P(ke, null, Dt(r.treeData, (f) => (R(), nt(Xr, {
6053
- key: f.uuid,
6054
- node: f,
6082
+ return (g, f) => r.transform ? (R(), P("div", Va, [
6083
+ C("div", Ja, [
6084
+ f[7] || (f[7] = C("label", null, "场景物体", -1)),
6085
+ C("div", Qa, [
6086
+ (R(!0), P(Pe, null, Dt(r.treeData, (m) => (R(), nt(Xr, {
6087
+ key: m.uuid,
6088
+ node: m,
6055
6089
  "selected-object": r.selectedObject,
6056
6090
  version: A.value,
6057
- onSelect: p[0] || (p[0] = (g) => n("treeSelect", g)),
6058
- onDelete: h
6091
+ onSelect: f[0] || (f[0] = (p) => n("treeSelect", p)),
6092
+ onDelete: d
6059
6093
  }, null, 8, ["node", "selected-object", "version"]))), 128)),
6060
- r.treeData.length === 0 ? (R(), P("div", Va, "暂无物体")) : B("", !0)
6094
+ r.treeData.length === 0 ? (R(), P("div", Ya, "暂无物体")) : Z("", !0)
6061
6095
  ])
6062
6096
  ]),
6063
- C("div", Ja, [
6064
- p[8] || (p[8] = C("label", null, "全局属性", -1)),
6065
- C("div", Qa, [
6097
+ C("div", _a, [
6098
+ f[8] || (f[8] = C("label", null, "全局属性", -1)),
6099
+ C("div", $a, [
6066
6100
  C("button", {
6067
- class: ie(["mode-btn", { active: s.value === "translate" }]),
6101
+ class: oe(["mode-btn", { active: s.value === "translate" }]),
6068
6102
  title: "移动 (W)",
6069
- onClick: p[1] || (p[1] = (f) => i("translate"))
6103
+ onClick: f[1] || (f[1] = (m) => i("translate"))
6070
6104
  }, " ↕ 移动 ", 2),
6071
6105
  C("button", {
6072
- class: ie(["mode-btn", { active: s.value === "rotate" }]),
6106
+ class: oe(["mode-btn", { active: s.value === "rotate" }]),
6073
6107
  title: "旋转 (E)",
6074
- onClick: p[2] || (p[2] = (f) => i("rotate"))
6108
+ onClick: f[2] || (f[2] = (m) => i("rotate"))
6075
6109
  }, " ↻ 旋转 ", 2),
6076
6110
  C("button", {
6077
- class: ie(["mode-btn", { active: s.value === "scale" }]),
6111
+ class: oe(["mode-btn", { active: s.value === "scale" }]),
6078
6112
  title: "缩放 (R)",
6079
- onClick: p[3] || (p[3] = (f) => i("scale"))
6113
+ onClick: f[3] || (f[3] = (m) => i("scale"))
6080
6114
  }, " ⤡ 缩放 ", 2)
6081
6115
  ])
6082
6116
  ]),
6083
- r.selectedObject ? (R(), P("div", Ya, [
6117
+ r.selectedObject ? (R(), P("div", el, [
6084
6118
  C("button", {
6085
- class: ie(["tab-btn", { active: a.value === "transform" }]),
6086
- onClick: p[4] || (p[4] = (f) => a.value = "transform")
6119
+ class: oe(["tab-btn", { active: a.value === "transform" }]),
6120
+ onClick: f[4] || (f[4] = (m) => a.value = "transform")
6087
6121
  }, " 🔄 变换 ", 2),
6088
6122
  C("button", {
6089
- class: ie(["tab-btn", { active: a.value === "userdata" }]),
6090
- onClick: p[5] || (p[5] = (f) => a.value = "userdata")
6123
+ class: oe(["tab-btn", { active: a.value === "userdata" }]),
6124
+ onClick: f[5] || (f[5] = (m) => a.value = "userdata")
6091
6125
  }, " 📋 自定义数据 ", 2),
6092
6126
  l.value ? (R(), P("button", {
6093
6127
  key: 0,
6094
- class: ie(["tab-btn", { active: a.value === "datapanel" }]),
6095
- onClick: p[6] || (p[6] = (f) => a.value = "datapanel")
6096
- }, " 📊 数据面板 ", 2)) : B("", !0)
6097
- ])) : B("", !0),
6098
- r.selectedObject ? (R(), P("div", _a, [
6099
- k(Ft(ca, {
6128
+ class: oe(["tab-btn", { active: a.value === "datapanel" }]),
6129
+ onClick: f[6] || (f[6] = (m) => a.value = "datapanel")
6130
+ }, " 📊 数据面板 ", 2)) : Z("", !0)
6131
+ ])) : Z("", !0),
6132
+ r.selectedObject ? (R(), P("div", tl, [
6133
+ k(Ut(ca, {
6100
6134
  transform: r.transform,
6101
6135
  "selected-object": r.selectedObject,
6102
6136
  onPropertyChange: o
6103
6137
  }, null, 8, ["transform", "selected-object"]), [
6104
6138
  [Le, a.value === "transform"]
6105
6139
  ]),
6106
- k(Ft(Ma, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6140
+ k(Ut(Ma, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6107
6141
  [Le, a.value === "userdata"]
6108
6142
  ]),
6109
- k(Ft(Ka, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6143
+ k(Ut(Xa, { "selected-object": r.selectedObject }, null, 8, ["selected-object"]), [
6110
6144
  [Le, a.value === "datapanel"]
6111
6145
  ])
6112
- ])) : B("", !0)
6113
- ])) : (R(), P("div", $a, [...p[9] || (p[9] = [
6146
+ ])) : Z("", !0)
6147
+ ])) : (R(), P("div", sl, [...f[9] || (f[9] = [
6114
6148
  C("p", null, "未选中任何模型", -1)
6115
6149
  ])]));
6116
6150
  }
6117
- }), tl = /* @__PURE__ */ ve(el, [["__scopeId", "data-v-c92c9fa7"]]), sl = { class: "top-bar" }, nl = { class: "left-section" }, il = { class: "dropdown-menu" }, ol = { class: "dropdown-menu sub-menu" }, rl = { class: "dropdown-menu sub-menu" }, al = { class: "dropdown-menu" }, ll = /* @__PURE__ */ xe({
6151
+ }), il = /* @__PURE__ */ Se(nl, [["__scopeId", "data-v-c92c9fa7"]]), ol = { class: "top-bar" }, rl = { class: "left-section" }, al = { class: "dropdown-menu" }, ll = { class: "dropdown-menu sub-menu" }, Al = { class: "dropdown-menu sub-menu" }, cl = { class: "dropdown-menu" }, ul = /* @__PURE__ */ ve({
6118
6152
  __name: "TopBar",
6119
6153
  emits: ["addModel", "importModel"],
6120
6154
  setup(r, { emit: e }) {
6121
6155
  const t = W(!1), n = W(!1), s = W(!1), i = W(!1), o = e, a = W(null), l = () => {
6122
- var p;
6123
- return (p = a.value) == null ? void 0 : p.click();
6124
- }, A = (p) => {
6125
- const f = p.target;
6126
- f.files && f.files.length > 0 && (o("importModel", f.files[0]), f.value = "");
6127
- }, u = () => console.log("撤销"), c = () => console.log("删除物体"), d = async () => {
6128
- const p = zo();
6129
- console.log(JSON.parse(await p));
6130
- }, h = () => {
6156
+ var f;
6157
+ return (f = a.value) == null ? void 0 : f.click();
6158
+ }, A = (f) => {
6159
+ const m = f.target;
6160
+ m.files && m.files.length > 0 && (o("importModel", m.files[0]), m.value = "");
6161
+ }, u = () => console.log("撤销"), c = () => console.log("删除物体"), h = async () => {
6162
+ const f = zo();
6163
+ console.log(JSON.parse(await f));
6164
+ }, d = () => {
6131
6165
  if (!localStorage.getItem("test_id")) return localStorage.setItem("test_id", "123");
6132
6166
  ln(localStorage.getItem("test_id"));
6133
- }, m = () => on();
6134
- return (p, f) => (R(), P("div", sl, [
6135
- C("div", nl, [
6167
+ }, g = () => on();
6168
+ return (f, m) => (R(), P("div", ol, [
6169
+ C("div", rl, [
6136
6170
  C("div", {
6137
6171
  class: "dropdown-wrapper",
6138
- onMouseenter: f[9] || (f[9] = (g) => n.value = !0),
6139
- onMouseleave: f[10] || (f[10] = (g) => n.value = !1)
6172
+ onMouseenter: m[9] || (m[9] = (p) => n.value = !0),
6173
+ onMouseleave: m[10] || (m[10] = (p) => n.value = !1)
6140
6174
  }, [
6141
- f[15] || (f[15] = C("button", { class: "menu-btn" }, "添加", -1)),
6142
- k(C("div", il, [
6175
+ m[15] || (m[15] = C("button", { class: "menu-btn" }, "添加", -1)),
6176
+ k(C("div", al, [
6143
6177
  C("div", {
6144
6178
  class: "menu-item",
6145
6179
  onClick: u
6146
6180
  }, "组"),
6147
6181
  C("div", {
6148
6182
  class: "menu-item dropdown-wrapper sub-trigger",
6149
- onMouseenter: f[3] || (f[3] = (g) => s.value = !0),
6150
- onMouseleave: f[4] || (f[4] = (g) => s.value = !1)
6183
+ onMouseenter: m[3] || (m[3] = (p) => s.value = !0),
6184
+ onMouseleave: m[4] || (m[4] = (p) => s.value = !1)
6151
6185
  }, [
6152
- f[13] || (f[13] = C("span", null, "网格", -1)),
6153
- k(C("div", ol, [
6186
+ m[13] || (m[13] = C("span", null, "网格", -1)),
6187
+ k(C("div", ll, [
6154
6188
  C("div", {
6155
6189
  class: "menu-item",
6156
- onClick: f[0] || (f[0] = (g) => o("addModel", "box"))
6190
+ onClick: m[0] || (m[0] = (p) => o("addModel", "box"))
6157
6191
  }, " 正方体 "),
6158
6192
  C("div", {
6159
6193
  class: "menu-item",
6160
- onClick: f[1] || (f[1] = (g) => o("addModel", "sphere"))
6194
+ onClick: m[1] || (m[1] = (p) => o("addModel", "sphere"))
6161
6195
  }, " 球体 "),
6162
6196
  C("div", {
6163
6197
  class: "menu-item",
6164
- onClick: f[2] || (f[2] = (g) => o("addModel", "waterPlane"))
6198
+ onClick: m[2] || (m[2] = (p) => o("addModel", "waterPlane"))
6165
6199
  }, " 水面 "),
6166
6200
  C("div", {
6167
6201
  class: "menu-item",
@@ -6173,14 +6207,14 @@ const Ba = {
6173
6207
  ], 32),
6174
6208
  C("div", {
6175
6209
  class: "menu-item dropdown-wrapper sub-trigger",
6176
- onMouseenter: f[6] || (f[6] = (g) => i.value = !0),
6177
- onMouseleave: f[7] || (f[7] = (g) => i.value = !1)
6210
+ onMouseenter: m[6] || (m[6] = (p) => i.value = !0),
6211
+ onMouseleave: m[7] || (m[7] = (p) => i.value = !1)
6178
6212
  }, [
6179
- f[14] || (f[14] = C("span", null, "光源", -1)),
6180
- k(C("div", rl, [
6213
+ m[14] || (m[14] = C("span", null, "光源", -1)),
6214
+ k(C("div", Al, [
6181
6215
  C("div", {
6182
6216
  class: "menu-item",
6183
- onClick: f[5] || (f[5] = (g) => o("addModel", "directionalLight"))
6217
+ onClick: m[5] || (m[5] = (p) => o("addModel", "directionalLight"))
6184
6218
  }, " 平行光 ")
6185
6219
  ], 512), [
6186
6220
  [Le, i.value]
@@ -6192,7 +6226,7 @@ const Ba = {
6192
6226
  }, "摄像机"),
6193
6227
  C("div", {
6194
6228
  class: "menu-item",
6195
- onClick: f[8] || (f[8] = (g) => o("addModel", "dataPanel"))
6229
+ onClick: m[8] || (m[8] = (p) => o("addModel", "dataPanel"))
6196
6230
  }, " 数据面板 ")
6197
6231
  ], 512), [
6198
6232
  [Le, n.value]
@@ -6200,29 +6234,29 @@ const Ba = {
6200
6234
  ], 32),
6201
6235
  C("div", {
6202
6236
  class: "dropdown-wrapper",
6203
- onMouseenter: f[11] || (f[11] = (g) => t.value = !0),
6204
- onMouseleave: f[12] || (f[12] = (g) => t.value = !1)
6237
+ onMouseenter: m[11] || (m[11] = (p) => t.value = !0),
6238
+ onMouseleave: m[12] || (m[12] = (p) => t.value = !1)
6205
6239
  }, [
6206
- f[16] || (f[16] = C("button", { class: "menu-btn" }, "帮助", -1)),
6207
- k(C("div", al, [
6240
+ m[16] || (m[16] = C("button", { class: "menu-btn" }, "帮助", -1)),
6241
+ k(C("div", cl, [
6208
6242
  C("div", {
6209
6243
  class: "menu-item",
6210
- onClick: d
6244
+ onClick: h
6211
6245
  }, "获取场景"),
6212
6246
  C("div", {
6213
6247
  class: "menu-item",
6214
- onClick: h
6248
+ onClick: d
6215
6249
  }, "镜头拉近"),
6216
6250
  C("div", {
6217
6251
  class: "menu-item",
6218
- onClick: m
6252
+ onClick: g
6219
6253
  }, " 重置相机位置 ")
6220
6254
  ], 512), [
6221
6255
  [Le, t.value]
6222
6256
  ])
6223
6257
  ], 32)
6224
6258
  ]),
6225
- f[17] || (f[17] = C("div", { class: "right-section" }, [
6259
+ m[17] || (m[17] = C("div", { class: "right-section" }, [
6226
6260
  C("span", { class: "app-title" }, "3D 模型编辑器")
6227
6261
  ], -1)),
6228
6262
  C("input", {
@@ -6235,10 +6269,10 @@ const Ba = {
6235
6269
  }, null, 544)
6236
6270
  ]));
6237
6271
  }
6238
- }), Al = /* @__PURE__ */ ve(ll, [["__scopeId", "data-v-45df3361"]]), cl = { class: "bottom-bar" }, ul = /* @__PURE__ */ xe({
6272
+ }), dl = /* @__PURE__ */ Se(ul, [["__scopeId", "data-v-45df3361"]]), hl = { class: "bottom-bar" }, fl = /* @__PURE__ */ ve({
6239
6273
  __name: "BottomBar",
6240
6274
  setup(r) {
6241
- return (e, t) => (R(), P("div", cl, [...t[0] || (t[0] = [
6275
+ return (e, t) => (R(), P("div", hl, [...t[0] || (t[0] = [
6242
6276
  C("div", { class: "status-left" }, [
6243
6277
  C("span", null, "就绪")
6244
6278
  ], -1),
@@ -6247,10 +6281,10 @@ const Ba = {
6247
6281
  ], -1)
6248
6282
  ])]));
6249
6283
  }
6250
- }), dl = /* @__PURE__ */ ve(ul, [["__scopeId", "data-v-3427bb27"]]), hl = { class: "app-layout" }, fl = {
6284
+ }), pl = /* @__PURE__ */ Se(fl, [["__scopeId", "data-v-3427bb27"]]), ml = { class: "app-layout" }, gl = {
6251
6285
  key: 0,
6252
6286
  class: "loading-overlay"
6253
- }, pl = /* @__PURE__ */ xe({
6287
+ }, bl = /* @__PURE__ */ ve({
6254
6288
  __name: "DrawingBoard",
6255
6289
  props: {
6256
6290
  mode: { default: "edit" },
@@ -6258,97 +6292,97 @@ const Ba = {
6258
6292
  },
6259
6293
  setup(r) {
6260
6294
  const e = r, t = W(!1);
6261
- yo((g) => {
6262
- t.value = g;
6295
+ yo((p) => {
6296
+ t.value = p;
6263
6297
  });
6264
- const n = ps(null), s = Jt({
6298
+ const n = ps(null), s = Qt({
6265
6299
  position: { x: 0, y: 0, z: 0 },
6266
6300
  rotation: { x: 0, y: 0, z: 0 },
6267
6301
  scale: { x: 1, y: 1, z: 1 }
6268
- }), i = (g) => {
6269
- s.position.x = Number(g.position.x.toFixed(3)), s.position.y = Number(g.position.y.toFixed(3)), s.position.z = Number(g.position.z.toFixed(3)), s.rotation.x = Number(g.rotation.x.toFixed(3)), s.rotation.y = Number(g.rotation.y.toFixed(3)), s.rotation.z = Number(g.rotation.z.toFixed(3)), s.scale.x = Number(g.scale.x.toFixed(3)), s.scale.y = Number(g.scale.y.toFixed(3)), s.scale.z = Number(g.scale.z.toFixed(3));
6270
- }, o = (g) => {
6271
- g.position.set(
6302
+ }), i = (p) => {
6303
+ s.position.x = Number(p.position.x.toFixed(3)), s.position.y = Number(p.position.y.toFixed(3)), s.position.z = Number(p.position.z.toFixed(3)), s.rotation.x = Number(p.rotation.x.toFixed(3)), s.rotation.y = Number(p.rotation.y.toFixed(3)), s.rotation.z = Number(p.rotation.z.toFixed(3)), s.scale.x = Number(p.scale.x.toFixed(3)), s.scale.y = Number(p.scale.y.toFixed(3)), s.scale.z = Number(p.scale.z.toFixed(3));
6304
+ }, o = (p) => {
6305
+ p.position.set(
6272
6306
  s.position.x,
6273
6307
  s.position.y,
6274
6308
  s.position.z
6275
- ), g.rotation.set(
6309
+ ), p.rotation.set(
6276
6310
  s.rotation.x,
6277
6311
  s.rotation.y,
6278
6312
  s.rotation.z
6279
- ), g.scale.set(s.scale.x, s.scale.y, s.scale.z);
6313
+ ), p.scale.set(s.scale.x, s.scale.y, s.scale.z);
6280
6314
  };
6281
- Do((g) => {
6282
- n.value = g, g && i(g);
6283
- }), Wo((g) => {
6284
- i(g);
6315
+ Do((p) => {
6316
+ n.value = p, p && i(p);
6317
+ }), Wo((p) => {
6318
+ i(p);
6285
6319
  });
6286
6320
  const a = () => {
6287
6321
  if (n.value && (o(n.value), n.value.type === "DirectionalLight")) {
6288
- const g = n.value.userData.helper;
6289
- g && typeof g.update == "function" && g.update();
6322
+ const p = n.value.userData.helper;
6323
+ p && typeof p.update == "function" && p.update();
6290
6324
  }
6291
- }, l = (g) => Hr(g), A = async (g) => {
6325
+ }, l = (p) => Hr(p), A = async (p) => {
6292
6326
  try {
6293
- await Ur(g);
6294
- } catch (x) {
6295
- console.error("导入失败:", x), alert("导入失败:" + x.message);
6327
+ await Ur(p);
6328
+ } catch (I) {
6329
+ console.error("导入失败:", I), alert("导入失败:" + I.message);
6296
6330
  }
6297
6331
  }, u = ps([]);
6298
- jo((g) => {
6299
- u.value = g;
6332
+ jo((p) => {
6333
+ u.value = p;
6300
6334
  });
6301
6335
  const c = () => {
6302
- const g = Fo();
6303
- g && (u.value = g);
6304
- }, d = (g) => us(g), h = (g) => Po(g.uuid), m = (g) => {
6305
- xo(g);
6306
- }, p = W(null), f = () => {
6307
- p.value && co(p.value, e.mode, e.sceneData), c();
6336
+ const p = Fo();
6337
+ p && (u.value = p);
6338
+ }, h = (p) => us(p), d = (p) => Po(p.uuid), g = (p) => {
6339
+ xo(p);
6340
+ }, f = W(null), m = () => {
6341
+ f.value && co(f.value, e.mode, e.sceneData), c();
6308
6342
  };
6309
6343
  return Sn(() => {
6310
- f(), p.value && ro(p.value);
6344
+ m(), f.value && ro(f.value);
6311
6345
  }), Tn(() => {
6312
6346
  console.log("endset_three_editor destroy"), Ko();
6313
- }), (g, x) => (R(), P("div", hl, [
6314
- t.value ? (R(), P("div", fl, [...x[0] || (x[0] = [
6347
+ }), (p, I) => (R(), P("div", ml, [
6348
+ t.value ? (R(), P("div", gl, [...I[0] || (I[0] = [
6315
6349
  C("div", { class: "loading-spinner" }, null, -1),
6316
6350
  C("div", { class: "loading-text" }, "加载中...", -1)
6317
- ])])) : B("", !0),
6318
- r.mode === "edit" ? (R(), nt(Al, {
6351
+ ])])) : Z("", !0),
6352
+ r.mode === "edit" ? (R(), nt(dl, {
6319
6353
  key: 1,
6320
6354
  onAddModel: l,
6321
6355
  onImportModel: A
6322
- })) : B("", !0),
6356
+ })) : Z("", !0),
6323
6357
  C("div", {
6324
- class: ie(`editor-container editor-container-mode-${r.mode}`)
6358
+ class: oe(`editor-container editor-container-mode-${r.mode}`)
6325
6359
  }, [
6326
6360
  C("div", {
6327
- class: ie(`canvas canvas-mode-${r.mode}`),
6361
+ class: oe(`canvas canvas-mode-${r.mode}`),
6328
6362
  ref_key: "containerRef",
6329
- ref: p
6363
+ ref: f
6330
6364
  }, null, 2),
6331
- r.mode === "edit" ? (R(), nt(tl, {
6365
+ r.mode === "edit" ? (R(), nt(il, {
6332
6366
  key: 0,
6333
6367
  transform: s,
6334
6368
  "tree-data": u.value,
6335
6369
  "selected-object": n.value,
6336
6370
  onPropertyChange: a,
6337
- onTreeSelect: d,
6338
- onTreeDelete: h,
6339
- onTransformModeChange: m
6340
- }, null, 8, ["transform", "tree-data", "selected-object"])) : B("", !0)
6371
+ onTreeSelect: h,
6372
+ onTreeDelete: d,
6373
+ onTransformModeChange: g
6374
+ }, null, 8, ["transform", "tree-data", "selected-object"])) : Z("", !0)
6341
6375
  ], 2),
6342
- r.mode === "edit" ? (R(), nt(dl, { key: 2 })) : B("", !0)
6376
+ r.mode === "edit" ? (R(), nt(pl, { key: 2 })) : Z("", !0)
6343
6377
  ]));
6344
6378
  }
6345
- }), Sl = /* @__PURE__ */ ve(pl, [["__scopeId", "data-v-f80f67f2"]]);
6379
+ }), wl = /* @__PURE__ */ Se(bl, [["__scopeId", "data-v-f80f67f2"]]);
6346
6380
  export {
6347
- dl as BottomBar,
6381
+ pl as BottomBar,
6348
6382
  dt as DataPanel,
6349
- Sl as DrawingBoard,
6350
- tl as PropertyPanel,
6351
- Al as TopBar,
6383
+ wl as DrawingBoard,
6384
+ il as PropertyPanel,
6385
+ dl as TopBar,
6352
6386
  Xr as TreeItem,
6353
6387
  Or as addBox,
6354
6388
  Fr as addDataPanel,
@@ -6362,11 +6396,11 @@ export {
6362
6396
  Ao as disposeCSS2DRenderer,
6363
6397
  zo as exportSceneToJSON,
6364
6398
  To as focusOnObject,
6365
- Il as getCSS2DRenderer,
6399
+ vl as getCSS2DRenderer,
6366
6400
  Ho as getCamera,
6367
- cs as getDataPanel,
6368
- vl as getRenderer,
6369
- xl as getScene,
6401
+ Wt as getDataPanel,
6402
+ Ml as getRenderer,
6403
+ Tl as getScene,
6370
6404
  Fo as getSceneObjects,
6371
6405
  Uo as getSelectedObject,
6372
6406
  Ur as importModelFromFile,
@@ -6382,12 +6416,12 @@ export {
6382
6416
  lo as resizeCSS2DRenderer,
6383
6417
  ln as selectModelHandle,
6384
6418
  us as selectObject,
6385
- Gt as setLoading,
6419
+ Kt as setLoading,
6386
6420
  yo as setLoadingCallback,
6387
6421
  Do as setSelectedObjectCallback,
6388
6422
  Wo as setTransformChangeCallback,
6389
6423
  xo as setTransformMode,
6390
- yl as updateDataPanelValue,
6391
- Za as useTreeExpand
6424
+ Sl as updateDataPanelValue,
6425
+ qa as useTreeExpand
6392
6426
  };
6393
6427
  //# sourceMappingURL=three-editor.es.js.map