@realsee/dnalogel
Version:
268 lines (267 loc) • 10.9 kB
JavaScript
var x = Object.defineProperty;
var P = Object.getOwnPropertySymbols;
var I = Object.prototype.hasOwnProperty, W = Object.prototype.propertyIsEnumerable;
var S = (l, o, e) => o in l ? x(l, o, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[o] = e, n = (l, o) => {
for (var e in o || (o = {}))
I.call(o, e) && S(l, e, o[e]);
if (P)
for (var e of P(o))
W.call(o, e) && S(l, e, o[e]);
return l;
};
var f = (l, o, e) => (S(l, typeof o != "symbol" ? o + "" : o, e), e);
var g = (l, o, e) => new Promise((t, r) => {
var s = (c) => {
try {
b(e.next(c));
} catch (p) {
r(p);
}
}, h = (c) => {
try {
b(e.throw(c));
} catch (p) {
r(p);
}
}, b = (c) => c.done ? t(c.value) : Promise.resolve(c.value).then(s, h);
b((e = e.apply(l, o)).next());
});
import { Subscribe as R } from "@realsee/five";
import { Controller as L } from "../base/BasePlugin.js";
import "three";
import { MoveHelper as _ } from "../shared-utils/Object3DHelper/Helper/MoveHelper.js";
import { RotateHelper as $ } from "../shared-utils/Object3DHelper/Helper/RotateHelper.js";
import { CSS3DScaleHelper as F } from "../shared-utils/Object3DHelper/Helper/CSS3DScaleHelper.js";
import { BoundingBoxHelper as G } from "../shared-utils/Object3DHelper/Helper/BoundingBoxHelper.js";
import { MoveController as U } from "../shared-utils/Object3DHelper/Controller/MoveController.js";
import { ControllerWrapper as H } from "./FiveControllerWrapper.js";
import { Object3DHelper as N } from "../shared-utils/Object3DHelper/index.js";
import { RotateController as V } from "../shared-utils/Object3DHelper/Controller/RotateController.js";
import { CSS3DScaleController as q } from "../shared-utils/Object3DHelper/Controller/CSS3DScaleController.js";
import { CSS3DRender as z } from "../CSS3DRenderPlugin/utils/three/CSS3DRender.js";
import A from "../CSS3DRenderPlugin/utils/waitFiveModelLoaded.js";
import J from "../CSS3DRenderPlugin/utils/generateBehindFiveElement.js";
import { BoundingBoxController as K } from "../shared-utils/Object3DHelper/Controller/BoundingBoxController.js";
import { ScaleHelper as Q } from "../shared-utils/Object3DHelper/Helper/ScaleHelper.js";
import { ScaleController as T } from "../shared-utils/Object3DHelper/Controller/ScaleController.js";
import "../shared-utils/Subscribe.js";
import "hammerjs";
import "../vendor/@tweenjs/tween/dist/tween.esm.js.js";
import "animejs";
import "../shared-utils/url/absoluteUrl.js";
import "../shared-utils/Object3DHelper/Base/BaseHelper.js";
import "../shared-utils/Object3DHelper/utils/setObjectQuaternion.js";
import "../shared-utils/three/IObject3D.js";
import "../shared-utils/Object3DHelper/utils/boundingBox.js";
import "../shared-utils/Object3DHelper/Helper/Objects/ArrowGroup.js";
import "../shared-utils/Object3DHelper/utils/direction.js";
import "../shared-utils/Object3DHelper/Constants/color.js";
import "../shared-utils/Object3DHelper/utils/calculateScaleByCamera.js";
import "../shared-utils/Object3DHelper/Helper/HTML/tipsDom.js";
import "../shared-utils/Object3DHelper/Helper/HTML/utils/createElement.js";
import "../shared-utils/Object3DHelper/Helper/HTML/rectangleScaleDom.js";
import "../shared-utils/Object3DHelper/Base/BaseController.js";
import "../shared-utils/threex/domevents/index.js";
import "../shared-utils/isNil.js";
import "../shared-utils/util.js";
import "../shared-utils/Object3DHelper/utils/getMouseRaycaster.js";
import "../shared-utils/Object3DHelper/utils/calculateThreeMouse.js";
import "../Sculpt/utils/three/rayOnLine.js";
import "../shared-utils/math/rad2Deg.js";
import "../shared-utils/math/deg2Rad.js";
import "../shared-utils/Object3DHelper/Controller/RectangleScaleController.js";
import "../shared-utils/Object3DHelper/utils/vectorIsEqual.js";
import "../shared-utils/positionToVector3.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DRenderer.js";
import "three/examples/jsm/renderers/CSS3DRenderer";
import "../CSS3DRenderPlugin/utils/getAllCSS3DObject.js";
import "../CSS3DRenderPlugin/utils/createResizeObserver.js";
import "../CSS3DRenderPlugin/utils/even.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DObject.js";
import "../CSS3DRenderPlugin/utils/three/OpacityMesh.js";
import "../shared-utils/three/centerPoint.js";
import "../shared-utils/three/getObjectVisible.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DScene.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DGroup.js";
const w = "Object3DHelperPlugin", D = w, X = () => {
console.error(`${D} is disposed`);
}, Y = () => {
console.warn(`${D} is disabled`);
}, Z = () => {
console.error(`${D} is disabled`);
};
class sr extends L {
constructor(e) {
super(e);
f(this, "name", w);
f(this, "state", {
visible: !0,
enabled: !0,
disposed: !1
});
f(this, "objectHelperMap", /* @__PURE__ */ new Map());
f(this, "css3DObjectParentMap", /* @__PURE__ */ new Map());
f(this, "css3DRender");
this.five = e, this.css3DRender = new z(this.five.scene), console.warn("Object3DHelper: 使用此插件,需要在初始化five时,设置five参数: { backgroundAlpha: 0, backgroundColor: 0x000000 }"), Object.assign(window, { [`__${w.toUpperCase()}_DEBUG__`]: this });
}
/**
* @description Show guide line
*/
show(e) {
return g(this, null, function* () {
this.setState({ visible: !0 }, e);
});
}
/**
* @description Hide guide line
*/
hide(e) {
return g(this, null, function* () {
this.setState({ visible: !1 }, e);
});
}
/**
* @description Enable
*/
enable(e) {
this.setState({ enabled: !0 }, e);
}
/**
* @description Disable
*/
disable(e) {
this.setState({ enabled: !1 }, e);
}
/**
* @description Dispose
*/
dispose() {
this.setState({ disposed: !0 });
}
setState(e, t) {
if (this.state.disposed)
return X();
if (!this.state.enabled && e.enabled !== !0 && e.disposed !== !0)
return Z();
const r = n({}, this.state);
this.state = n(n({}, this.state), e), e.disposed !== void 0 && e.disposed !== r.disposed && e.disposed && this.handleDispose(), e.visible !== void 0 && e.visible !== r.visible && this.handleVisible(e.visible), e.enabled !== void 0 && e.enabled !== r.enabled && this.handleEnable(e.enabled), this.hooks.emit("stateChange", { state: this.state, prevState: r });
}
getObject3DHelper(e) {
return this.objectHelperMap.get(e);
}
/**
* @description 添加 helper
* @param { THREE.Object3D } object3D 要添加helper的物体
* @param { boolean } config.moveHelper 位移helper
* @param { boolean } config.rotateHelper 旋转helper
* @param { boolean } config.scaleHelper 缩放helper
*/
addObject3DHelper(e, t = {}) {
var M;
if (!e) {
console.error("Object3D is undefined");
return;
}
if (this.objectHelperMap.has(e)) {
console.warn(`Object3DHelperPlugin: object3D ${e.name} is already has helper`);
return;
}
const r = new N(), s = [], h = (M = this.five.getElement()) == null ? void 0 : M.parentElement, b = this.five.camera, p = n(n({}, {
moveHelper: !0,
rotateHelper: !0,
scaleHelper: !0,
boundingBoxHelper: !1,
positionFrom: "objectPosition"
}), t), { moveHelper: y, rotateHelper: B, scaleHelper: j, boundingBoxHelper: k, positionFrom: ee } = p, u = new R(), v = new R(), C = (i) => {
if (i)
return typeof i == "boolean" ? i : i.enable;
};
if (C(y)) {
const i = n(n({}, this.getConfig(p.moveHelper)), p), d = new _(e, n({}, i)), a = new H(this.five, U, e, d, i, u, v);
r.addControllers({ moveController: a.helperController }), s.push(() => a.dispose());
}
if (C(B)) {
const i = n(n({}, this.getConfig(p.rotateHelper)), p), d = new $(e, n({ container: h }, i)), a = new H(this.five, V, e, d, i, u, v);
r.addControllers({ rotateController: a.helperController }), s.push(() => a.dispose());
}
if (C(k)) {
const i = new G(e), d = new H(
this.five,
K,
e,
i,
void 0,
u,
v
);
r.addControllers({ boundingBoxController: d.helperController });
}
if (C(j))
if (e.isCSS3DObjectPlus && h) {
const i = new F(e, h, b, this.five.scene), d = new H(
this.five,
q,
e,
i,
void 0,
u,
v
);
r.addControllers({ scaleController: d.helperController }), s.push(() => d.dispose()), A(this.five).then(() => {
var a, O;
if (e.isCSS3DObjectPlus) {
const m = e;
if (!m || m.mode !== "front")
return;
const E = (a = this.css3DRender.behindModeCSS3DRenderer.wrapper) != null ? a : J(this.five);
E && (this.css3DObjectParentMap.set(m, m.parent), m.removeFromParent(), this.css3DRender.behindModeCSS3DRenderer.setWrapper(E), (O = this.css3DRender.getBehindCSS3DObjectGroup()) == null || O.add(m), this.css3DRender.render(this.five.camera));
}
});
} else {
const i = n(n({}, this.getConfig(p.scaleHelper)), p), d = new Q(e, i), a = new H(this.five, T, e, d, i, u, v);
r.addControllers({ scaleController: a.helperController }), s.push(() => a.dispose());
}
return this.objectHelperMap.set(e, { helper: r, disposers: s }), r.controllers;
}
removeObject3DHelper(e) {
if (!this.objectHelperMap.has(e))
return;
const { helper: t, disposers: r } = this.objectHelperMap.get(e);
if (t) {
if (e.isCSS3DObjectPlus) {
const s = e, h = this.css3DObjectParentMap.get(s);
h && h.add(s), this.css3DRender.render(this.five.camera);
}
this.objectHelperMap.delete(e), t.dispose(), r == null || r.forEach((s) => s == null ? void 0 : s());
}
}
handleEnable(e, t = !0) {
e ? (this.everyHelperDo((r) => r.enable()), this.hooks.emit("enable", { userAction: t })) : (this.everyHelperDo((r) => r.disable()), this.hooks.emit("disable", { userAction: t })), this.state.enabled = e;
}
handleVisible(e, t = !0) {
e ? (this.everyHelperDo((r) => r.show()), this.actionIfStateIsEnabled(() => this.hooks.emit("show", { userAction: t }))) : (this.everyHelperDo((r) => r.hide()), this.actionIfStateIsEnabled(() => this.hooks.emit("hide", { userAction: t }))), this.state.visible = e;
}
handleDispose() {
this.everyHelperDo((e, t) => {
e.dispose(), t == null || t.forEach((r) => r == null ? void 0 : r());
});
}
everyHelperDo(e) {
this.objectHelperMap.forEach(({ helper: t, disposers: r }) => {
t && e(t, r);
});
}
actionIfStateIsEnabled(e, t) {
if (this.state.enabled)
return e();
t != null && t.warnLog && Y();
}
getConfig(e) {
if (e && typeof e != "boolean" && e.enable)
return e;
}
}
export {
sr as Object3DHelperController,
D as PLUGIN
};