@startuml class JointPlacementHandler { - {static} instance : JointPlacementHandler - socketSearchRadius : float = 1f - blockLayerMask : LayerMask + {static} getInstance() : JointPlacementHandler - Awake() : void + FindAllSocketsAlignedBetween(start:SocketPoint, end:SocketPoint) : List - IsPointOnSegment(A:Vector3, B:Vector3, P:Vector3, tolerance:float) : bool + FindTargetSocketsForJoint(jointBlock:JointBlock, searchPosition:Vector3) : List - FindSocketAtJointEnd(firstSocket:SocketPoint, end1:SocketPoint, end2:SocketPoint) : SocketPoint - FindClosestSocket(position:Vector3, sockets:List) : SocketPoint } MonoBehaviour <|-- JointPlacementHandler @enduml