@startuml class AxisMoveStrategy { - <> _lockedRotation : Quaternion - _isDragging : bool - _axisDirection : Vector3 - _axisOrigin : Vector3 - _clampMin : float - _clampMax : float - _camera : Camera - _frozenPosition : Vector3 - _lastMousePos : Vector2 - _accumulated : float + AxisMoveStrategy(lockedRotation:Quaternion, clampMin:float, clampMax:float) + BeginDrag(axisDirection:Vector3, ghostPosition:Vector3) : void + EndDrag() : void + UpdateMovement(ctx:GhostMovementContext) : void - TrySocketSnap(ctx:GhostMovementContext) : bool } IGhostMovementStrategy <|-- AxisMoveStrategy @enduml