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
TypeScript
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