UNPKG

threepipe

Version:

A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.

97 lines 3.39 kB
import { Camera, Group, LineBasicMaterial, Object3DEventMap, MeshBasicMaterial, Object3D } from 'three'; export interface PivotControlsEventMap { change: {}; objectChange: {}; mouseDown: { mode: string; }; mouseUp: { mode: string; }; 'dragging-changed': { value: boolean; }; } /** * PivotControls - A gizmo that shows all transform handles simultaneously * (translation arrows, plane sliders, rotation arcs, scaling spheres). * Follows the same architecture as TransformControls — single class, * mesh-based geometry, ObjectConstructors for material injection. */ export declare class PivotControls extends Group<PivotControlsEventMap & Object3DEventMap> { static ObjectConstructors: { MeshBasicMaterial: typeof MeshBasicMaterial; LineBasicMaterial: typeof LineBasicMaterial; }; camera: Camera; domElement: HTMLCanvasElement; object: Object3D | undefined; enabled: boolean; autoTransform: boolean; /** Scale multiplier for the gizmo, same as TransformControls 'size'. Applied per-frame. */ gizmoScale: number; activeAxes: [boolean, boolean, boolean]; disableAxes: boolean; disableSliders: boolean; disableRotations: boolean; disableScaling: boolean; translationLimits?: ([number, number] | undefined)[]; rotationLimits?: ([number, number] | undefined)[]; scaleLimits?: ([number, number] | undefined)[]; axisColors: [number, number, number]; hoveredColor: number; handleOpacity: number; /** Coordinate space for transformations. 'world' or 'local'. */ space: 'world' | 'local'; /** Snap values when shift is held. Set to null to disable snapping for that transform. */ translationSnap: number | null; rotationSnap: number | null; scaleSnap: number | null; /** Whether gizmo materials use depth testing. false = always visible through objects. */ depthTest: boolean; /** When true, gizmo maintains constant screen size regardless of camera distance (default). */ fixed: boolean; /** When true, alt/option+drag on a scale sphere applies uniform scale. */ uniformScaleEnabled: boolean; /** Show value annotations during drag. */ annotations: boolean; private _gizmoGroup; private _handles; private _raycaster; private _activeHandle; private _dragging; private _hoveredHandle; private _translation; private _uniformScaling; private _annotationEl; private _onPointerDown; private _onPointerMove; private _onPointerUp; constructor(camera: Camera, domElement: HTMLCanvasElement); private _onKeyDown; private _handleKeyDown; private _ensureAnnotationEl; private _showAnnotation; private _hideAnnotation; private _updateAnnotation; private _buildHandles; updateHandleVisibility(): void; attach(object: Object3D): this; detach(): this; updateGizmoScale(): void; rebuild(): void; dispose(): void; private _getNDC; private _getAllPickers; private _findHandle; private _handlePointerDown; private _handlePointerMove; private _handlePointerUp; private _endDrag; private _onDragStart; private _onDragMove; private _onDragEnd; private _applyTransform; private _getMode; } //# sourceMappingURL=../../src/three/controls/PivotControls.d.ts.map