@startuml class SocketContainer { - sockets : List - iterativeSockets : List - autoDetectSockets : bool = true - allowCycling : bool = true - wrapAround : bool = true - containerInit : BlockContainerInit - currentSocketIndex : int = 0 - currentActiveSocket : SocketPoint - Awake() : void - InitializeSockets() : void + GetActiveSocket() : SocketPoint + CycleToNextSocket() : void + CycleToPreviousSocket() : void + SetActiveSocketByIndex(index:int) : void + SetActiveSocket(socket:SocketPoint) : void + ResetToFirstSocket() : void + GetAllSockets() : List + GetAvailableSockets() : List + GetOccupiedSockets() : List + FindNearestCompatibleSocket(worldPosition:Vector3, sourceSocket:SocketPoint) : SocketPoint + FindSocketsInRadius(worldPosition:Vector3, radius:float, onlyAvailable:bool) : List + GetSocketsByType(type:SocketType) : List + HighlightAllSockets(state:HighlightState) : void + ClearAllHighlights() : void + AddSocket(socket:SocketPoint) : void + RemoveSocket(socket:SocketPoint) : void + GetSocketCount() : int + HasSockets() : bool + GetCurrentSocketIndex() : int + FindSocketsCompatibleWithJoint(jointBlock:JointBlock) : List } MonoBehaviour <|-- SocketContainer @enduml