/** * Transform Gizmos for Interactive Parts * * Visual indicators that show constraint axes and interaction affordances. * - Rotation ring for hinge constraints * - Arrow for slider constraints * - Sphere for ball joint constraints * - Multi-axis for free/planar constraints */ import * as THREE from 'three'; import type { Constraint, Vector3 } from './types'; export interface GizmoOptions { /** Size of the gizmo (default: 1) */ size?: number; /** Opacity of the gizmo (default: 0.7) */ opacity?: number; /** Whether to show range limits (default: true) */ showLimits?: boolean; /** Color scheme */ colors?: { x?: number; y?: number; z?: number; selected?: number; limit?: number; }; } /** * TransformGizmo - Visual indicator for constraint-based interaction */ export declare class TransformGizmo { private group; private constraint; private options; private rotationRing; private translationArrow; private ballSphere; private limitIndicators; constructor(options?: GizmoOptions); /** * Get the Three.js group containing the gizmo */ getObject(): THREE.Group; /** * Show gizmo at position with given constraint */ show(position: Vector3, constraint: Constraint): void; /** * Hide the gizmo */ hide(): void; /** * Update gizmo position */ setPosition(position: Vector3): void; /** * Highlight specific axis (for hover feedback) */ highlightAxis(axis: 'x' | 'y' | 'z' | null): void; /** * Update gizmo to show current value within range */ updateValue(value: number): void; /** * Dispose of all gizmo resources */ dispose(): void; private clearGizmo; private resetHighlight; private getAxisColor; /** * Create rotation ring for hinge constraints */ private createRotationGizmo; /** * Create arrow for slider/piston constraints */ private createTranslationGizmo; /** * Create sphere for ball joint constraints */ private createBallGizmo; /** * Create planar gizmo for planar constraints */ private createPlanarGizmo; /** * Create multi-axis gizmo for free constraints */ private createFreeGizmo; /** * Create visual indicators for rotation limits */ private createRotationLimits; /** * Create visual indicators for translation limits */ private createTranslationLimits; } /** * Create a gizmo with default options */ export declare function createGizmo(options?: GizmoOptions): TransformGizmo; //# sourceMappingURL=gizmo.d.ts.map