filestash/public/assets/pages/viewerpage/application_3d/scene_cube.js
2025-06-09 15:38:37 +10:00

23 lines
879 B
JavaScript

import { onDestroy } from "../../../lib/skeleton/index.js";
import { ViewCubeGizmo, SimpleCameraControls, ObjectPosition } from "../../../lib/vendor/three/viewcube.js";
export default function({ camera, renderer, refresh, controls }) {
const viewCubeGizmo = new ViewCubeGizmo(camera, renderer, {
pos: ObjectPosition.RIGHT_BOTTOM,
dimension: 130,
faceColor: 0xf9f9fa,
outlineColor: 0xe2e2e2,
});
const simpleCameraControls = new SimpleCameraControls(camera);
simpleCameraControls.setControls(controls);
refresh.push(() => {
viewCubeGizmo.update();
simpleCameraControls.update();
});
const onCubeClick = (event) => simpleCameraControls.flyTo(event.quaternion);
viewCubeGizmo.addEventListener("change", onCubeClick);
onDestroy(() => viewCubeGizmo.removeEventListener("change", onCubeClick));
}