import { Euler, Object3D, Vector3 } from 'three/webgpu'; import { OrbitController } from '../../../orbitcontroller/index.ts'; import { DIVEGizmoPlane as DIVEGizmoPlane } from './plane/GizmoPlane.ts'; import { DIVESelectable } from '../../../../index.ts'; /** * DIVE's own transform gizmo. * * **Written ahead of its activation, and deliberately not wired up yet.** The * toolbox currently drives three's `TransformControls` (see * `plugins/toolbox/src/transform/TransformTool.ts`), so nothing constructs a * `DIVEGizmo` at runtime. * * Being unreferenced is therefore expected and is *not* a sign that this is * obsolete — do not remove it as dead code. Its tests keep it compiling until * the switch happens. * * @module */ export type DIVEGizmoMode = 'translate' | 'rotate' | 'scale'; export type DIVEGizmoAxis = 'x' | 'y' | 'z'; export declare class DIVEGizmo extends Object3D { private _mode; get mode(): DIVEGizmoMode; set mode(value: DIVEGizmoMode); set debug(value: boolean); private _gizmoNode; get gizmoNode(): Object3D; private _translateGizmo; private _rotateGizmo; private _scaleGizmo; private _gizmoPlane; get gizmoPlane(): DIVEGizmoPlane; private _object; get object(): (Object3D & DIVESelectable) | null; constructor(controller: OrbitController); attach(object: Object3D & DIVESelectable): this; detach(): this; onHover(mode: DIVEGizmoMode, axis: DIVEGizmoAxis, value: boolean): void; onChange(position?: Vector3, rotation?: Euler, scale?: Vector3): void; private assemble; }