Interface AttachControlOptions
isExternalDragActive?: () => boolean;
isExternalPickPending?: () => boolean;
keyboard?: boolean | ArcRotateKeyboardOptions;
pointerMappings?: ArcRotatePointerMappings;
shouldHandlePointerDown?: (event: PointerEvent) => boolean;
}
Properties
Optionalis External Drag Active
Optional predicate consulted on pointer-move while a camera drag is in progress. When it returns true the camera ABORTS the current drag. Because gizmo picking is async, a press on a gizmo may not be known at pointer-down time (so the camera optimistically starts orbiting); once the gizmo drag is recognised a frame later this lets the gizmo reclaim the gesture and undo the (not-yet-applied) orbit.
Optionalis External Pick Pending
Optional predicate consulted on pointer-move. While it returns true the camera DEFERS its orbit (consumes the move without applying it) — used to wait out an in-flight async gizmo pick so a press that lands on a gizmo never produces a stray orbit, regardless of pick latency.
Optionalkeyboard
Keyboard controls after enableArcRotateKeyboardControls installs
the opt-in module. Pass true for legacy-compatible Arrow-key defaults,
a configuration object to customize them, or omit/false to disable them.
Optionalpointer Mappings
Independent primary/secondary mappings for mouse and pen drags. Touch remains one-finger rotate plus two-finger pinch zoom.
Optionalshould Handle Pointer Down
Optional predicate consulted on every pointer-down. When it returns false the camera ignores that gesture (no rotate / pan). Used to defer to gizmo interaction so pressing or dragging a gizmo doesn't also orbit the camera.
Optional hooks that let an attachControl caller defer pointer gestures to an external interactor (typically a gizmo pointer-drag dispatcher) so the camera doesn't orbit when the user is interacting with something else on top of it. All fields are optional; omit them to keep the default behavior (the camera always handles its own pointer input).