@realsee/dnalogel
Version:
195 lines (194 loc) • 8.61 kB
JavaScript
var P = Object.defineProperty;
var D = (l, n, e) => n in l ? P(l, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[n] = e;
var r = (l, n, e) => (D(l, typeof n != "symbol" ? n + "" : n, e), e);
var M = (l, n, e) => new Promise((s, t) => {
var m = (i) => {
try {
a(e.next(i));
} catch (p) {
t(p);
}
}, o = (i) => {
try {
a(e.throw(i));
} catch (p) {
t(p);
}
}, a = (i) => i.done ? s(i.value) : Promise.resolve(i.value).then(m, o);
a((e = e.apply(l, n)).next());
});
import { Controller as A } from "../base/BasePluginWithData.js";
import * as h from "three";
import { ModelMakerBoxItem as C } from "./item/boxItem.js";
import { PrismMesh as j } from "../Sculpt/Meshes/Prism.js";
import { anyPositionToVector3 as I } from "../shared-utils/positionToVector3.js";
import { PolygonWithEdgeMesh as T } from "../Sculpt/Meshes/PolygonWithEdge.js";
import "hammerjs";
import "@realsee/five";
import "../vendor/@tweenjs/tween/dist/tween.esm.js.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DRender.js";
import "../CSS3DRenderPlugin/utils/generateBehindFiveElement.js";
import "animejs";
import { notNil as x } from "../shared-utils/isNil.js";
import { tagRendererMap as H } from "./utils/tagRenderer.js";
import { ModelMakerPrismItem as F } from "./item/prismItem.js";
import { ModelMakerPolygonItem as L } from "./item/polygonItem.js";
import { boxVertex as c } from "../shared-utils/Object3DHelper/utils/boundingBox.js";
import { getFiveDomEvent as O } from "./utils/getFiveDomEvent.js";
import "../base/BasePlugin.js";
import "../shared-utils/Subscribe.js";
import "../shared-utils/url/absoluteUrl.js";
import "../shared-utils/three/IObject3D.js";
import "../Sculpt/Meshes/Polygon.js";
import "../shared-utils/three/generatePolygonGeometry.js";
import "../shared-utils/three/earcut3D.js";
import "earcut";
import "../shared-utils/three/getNormal.js";
import "../Sculpt/utils/color.js";
import "../Sculpt/utils/three/ColoredMesh.js";
import "../shared-utils/three/geometryUtil.js";
import "../shared-utils/three/centerPoint.js";
import "../Sculpt/Meshes/Line.js";
import "@realsee/five/line";
import "../Sculpt/Meshes/Polyline.js";
import "../Sculpt/Meshes/LineWithDots.js";
import "../Sculpt/Meshes/Point.js";
import "../shared-utils/three/closeVectors.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DRenderer.js";
import "three/examples/jsm/renderers/CSS3DRenderer";
import "../CSS3DRenderPlugin/utils/getAllCSS3DObject.js";
import "../shared-utils/util.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/getObjectVisible.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DScene.js";
import "../CSS3DRenderPlugin/utils/three/CSS3DGroup.js";
import "./utils/Text.js";
import "../vendor/svelte/internal/index.js";
import "../components/AreaLabel/LabelItem.js";
import "../components/AreaLabel/Assets/roomLabelBg.js";
import "./item/baseItem.js";
import "../shared-utils/three/addIfNotExists.js";
import "../shared-utils/tag.js";
import "../shared-utils/five/vector3ToScreen.js";
import "../shared-utils/five/FiveDomEvents.js";
import "../shared-utils/five/calculateThreeMouse.js";
class Se extends A {
constructor(e) {
super(e);
r(this, "state");
r(this, "items", []);
r(this, "data");
r(this, "group", new h.Group());
r(this, "tagRendererMap", {});
r(this, "fiveDomEvents");
r(this, "zFightingOffset", 0);
r(this, "handleEnable", () => {
this.items.forEach((e) => e.enable());
});
r(this, "handleDisable", () => {
this.items.forEach((e) => e.disable());
});
r(this, "updateTagRenderer", () => {
this.items.forEach((e) => {
var t;
const s = (t = this.tagRendererMap[e.type]) != null ? t : H[e.type];
s && e.__renderer !== s && (e.__renderer = s, typeof e.__disposeRenderer == "function" && e.__disposeRenderer(), e.tag.container.innerHTML = "", e.__disposeRenderer = s(e.tag.container, e));
});
});
this.group.name = "ModelMakerPluginGroup", this.state = { enabled: !0, visible: !0 }, this.fiveDomEvents = O(e), e.scene.add(this.group), this.handleEnable(), window.__MODELMAKER_DEBUG__ = this;
}
load(e) {
return M(this, null, function* () {
var s;
this.clear(), this.data = e, (s = e == null ? void 0 : e.list) == null || s.forEach((t) => {
var m;
if (t.type === "triangles") {
const o = new T();
o.setPoints(t.object_data.points), o.setStyle({
color: t.object_data.color,
opacity: t.object_data.opacity,
lineColor: t.object_data.color,
occlusionVisibility: !1
}), this.fiveDomEvents.addEventListener(o, "hover", () => o.highlight()), this.fiveDomEvents.addEventListener(o, "unHover", () => o.unhighlight());
const a = new L({
five: this.five,
model: o,
group: this.group,
type: t.type,
rawData: t
});
this.items.push(a);
} else if (t.type === "prism") {
const o = new j();
this.zFightingOffset += 1e-4, o.setPoints({
points: t.object_data.points.map((i) => {
var p;
return [i[0], i[1] + ((p = t.object_data.fixedY) != null ? p : 0), i[2]];
}),
heightPoint: I(t.object_data.points[0]).add(new h.Vector3().setY(t.object_data.height + ((m = t.object_data.fixedHeight) != null ? m : 0))).add(new h.Vector3().setY(this.zFightingOffset))
}), o.setStyle({
color: t.object_data.color,
opacity: t.object_data.opacity,
lineColor: t.object_data.color,
occlusionVisibility: !1
});
const a = new F({
five: this.five,
model: o,
group: this.group,
type: t.type,
rawData: t
});
this.items.push(a);
} else if (t.type === "box") {
const o = new j(), { start: a, end: i, rotation: p = [0, 0, 0, 0], opacity: V, color: b } = t.object_data, f = new h.Vector3().fromArray(a), u = new h.Vector3().fromArray(i), R = new h.Euler().fromArray(p), g = new h.Quaternion().setFromEuler(R), y = g.clone().inverse(), _ = new h.Vector3().lerpVectors(f, u, 0.5), w = _.clone().negate(), v = f.clone().add(w).applyQuaternion(y), E = u.clone().add(w).applyQuaternion(y), d = new h.Box3(v.clone().max(E), v.clone().min(E));
o.setPoints({
points: [c(d, 2), c(d, 3), c(d, 7), c(d, 6)],
heightPoint: c(d, 0)
}), o.position.copy(_), o.quaternion.copy(g), o.setStyle({ color: b, opacity: V, lineColor: b, occlusionVisibility: !1 });
const k = new C({ five: this.five, model: o, group: this.group, type: t.type, rawData: t });
this.items.push(k);
}
}), this.five.needsRender = !0, this.state.enabled ? this.handleEnable() : this.handleDisable(), this.state.visible ? this.handleShow() : this.handleHide(), this.updateTagRenderer(), this.hooks.emit("dataLoaded", e);
});
}
setState(e) {
x(e.enabled) && this.state.enabled !== e.enabled && (this.state.enabled = e.enabled, e.enabled ? this.handleEnable() : this.handleDisable(), this.hooks.emit(e.enabled ? "enable" : "disable", { userAction: "我不知道捏" }), this.hooks.emit("stateChange", { state: this.state, userAction: "我不知道捏" })), x(e.visible) && this.state.visible !== e.visible && (this.state.visible = e.visible, e.visible ? this.handleShow() : this.handleHide(), this.hooks.emit(e.visible ? "show" : "hide", { userAction: "我不知道捏" }), this.hooks.emit("stateChange", { state: this.state, userAction: "我不知道捏" }));
}
getItemById(e) {
return this.items.find((s) => s.rawData.id === e);
}
registerTagRenderer(e) {
this.tagRendererMap = e, this.updateTagRenderer();
}
enable() {
this.setState({ enabled: !0 });
}
disable() {
this.setState({ enabled: !1 });
}
show() {
this.setState({ visible: !0 });
}
hide() {
this.setState({ visible: !1 });
}
clear() {
this.zFightingOffset = 0, this.handleDisable(), this.items = [];
}
dispose() {
this.hooks.emit("dispose"), this.handleDisable();
}
handleShow() {
this.items.forEach((e) => e.show());
}
handleHide() {
this.items.forEach((e) => e.hide());
}
}
export {
Se as Controller
};