@shopware-ag/dive
Version:
Shopware Spatial Framework
68 lines (67 loc) • 3.06 kB
JavaScript
var p = Object.defineProperty;
var _ = (t, r, e) => r in t ? p(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;
var i = (t, r, e) => _(t, typeof r != "symbol" ? r + "" : r, e);
import { Object3D as l, AxesHelper as d, Color as n, Matrix4 as c, OrthographicCamera as m, MathUtils as x, Vector4 as w } from "three/webgpu";
import "../../chunks/FileTypes-Ck6z0LqE.mjs";
import { C as o } from "../../chunks/PerspectiveCamera-35cBnxwG.mjs";
import "three/examples/jsm/loaders/HDRLoader.js";
import "three/tsl";
import { A as u, a as g, b as C, c as b, d as A, e as H } from "../../chunks/AxisHelperColors-JLBHYQDi.mjs";
import h from "three-spritetext";
class k extends l {
constructor() {
super();
i(this, "_axesHelper");
this._axesHelper = new d(0.5), this._axesHelper.layers.mask = o, this._axesHelper.material.depthTest = !1, this._axesHelper.position.set(0, 0, -1), this._axesHelper.setColors(
new n(u),
new n(g),
new n(C)
);
const e = new h("X", 0.2, b), s = new h("Y", 0.2, A), a = new h("Z", 0.2, H);
e.layers.mask = o, s.layers.mask = o, a.layers.mask = o, e.position.set(0.7, 0, 0), s.position.set(0, 0.7, 0), a.position.set(0, 0, 0.7), this._axesHelper.add(e), this._axesHelper.add(s), this._axesHelper.add(a), this.add(this._axesHelper);
}
setFromCameraMatrix(e) {
this._axesHelper.rotation.setFromRotationMatrix(
new c().extractRotation(e).invert()
);
}
}
class L {
constructor(r, e, s) {
i(this, "uuid", x.generateUUID());
i(this, "_axes");
i(this, "_orthographicCamera");
i(this, "_restoreViewport", new w());
this._renderer = r, this._scene = e, this._camera = s, this._orthographicCamera = new m(
-1,
1,
1,
-1,
0.1,
100
), this._orthographicCamera.name = "OrientationDisplayCamera", this._orthographicCamera.layers.mask = o, this._scene.add(this._orthographicCamera), this._axes = new k(), this._axes.name = "OrientationDisplayAxes", this._scene.add(this._axes);
}
tick() {
var a;
if (!this._renderer.webgpurenderer.initialized) return;
const r = this._scene.background ?? null, e = this._renderer.webgpurenderer.autoClear;
this._scene.background = null, this._renderer.webgpurenderer.getViewport(this._restoreViewport);
const s = ((a = this._renderer.webgpurenderer.domElement) == null ? void 0 : a.clientHeight) ?? this._restoreViewport.w;
this._renderer.webgpurenderer.setViewport(
0,
Math.max(0, s - 150),
150,
150
), this._renderer.webgpurenderer.autoClear = !1, this._axes.setFromCameraMatrix(this._camera.matrix), this._renderer.webgpurenderer.render(
this._scene,
this._orthographicCamera
), this._renderer.webgpurenderer.setViewport(this._restoreViewport), this._renderer.webgpurenderer.autoClear = e, this._scene.background = r;
}
dispose() {
this._scene.remove(this._axes), this._scene.remove(this._orthographicCamera);
}
}
export {
L as OrientationDisplay,
k as OrientationDisplayAxes
};