import * as THREE from "three"; import { AxesHelper } from "./axes.js"; import type { Theme, AxisColors, ColoredMaterial } from "../core/types"; /** Typed mesh with colored material for cones and labels */ type ColoredMesh = THREE.Mesh; /** * Displays an orientation gizmo in the corner showing XYZ axes. * Syncs rotation with the main camera. */ declare class OrientationMarker { width: number; height: number; cad_camera: THREE.Camera | null; theme: Theme; camera: THREE.OrthographicCamera | null; scene: THREE.Scene | null; renderer: THREE.WebGLRenderer | null; labels: ColoredMesh[]; ready: boolean; colors: AxisColors; cones: ColoredMesh[]; axes: AxesHelper | null; /** * Create an OrientationMarker. * @param width - Viewport width for the marker. * @param height - Viewport height for the marker. * @param camera - The main CAD camera to sync orientation with. * @param theme - Color theme ("dark" or "light"). */ constructor(width: number, height: number, camera: THREE.Camera, theme: Theme); /** * Create the orientation marker scene with axes, cones, and labels. */ create(): void; /** * Set visibility of all orientation marker elements. * @param flag - Whether the marker should be visible. */ setVisible(flag: boolean): void; /** * Dispose of all resources and clean up memory. */ dispose(): void; /** * Render the orientation marker to the given renderer. * @param renderer - The renderer to draw to. */ render(renderer: THREE.WebGLRenderer): void; /** * Update the marker to match the main camera's orientation. * @param position - Camera position (will be normalized). * @param quaternion - Camera rotation quaternion. */ update(position: THREE.Vector3, quaternion: THREE.Quaternion): void; /** * Change the color theme of the orientation marker. * @param theme - The theme name ("dark" or "light"). */ changeTheme(theme: Theme): void; } export { OrientationMarker };