@startuml class FreeMoveStrategy { + UpdateMovement(ctx:GhostMovementContext) : void - {static} TrySocketSnap(ctx:GhostMovementContext) : bool - {static} PerformSocketSnap(ctx:GhostMovementContext) : void - {static} AlignToSurfaceNormal(ctx:GhostMovementContext) : void - {static} MoveAlongSurface(ctx:GhostMovementContext) : void - {static} GetCurrentPivot(ctx:GhostMovementContext) : Transform - {static} SnapToNearestRightAngle(q:Quaternion) : Quaternion } IGhostMovementStrategy <|-- FreeMoveStrategy @enduml