@startuml class SocketPoint { - socketType : SocketType - socketRadius : float = 0.1f - socketNormal : Vector3 - acceptableTypes : List - radiusTolerance : float = 0.05f - visualIndicator : GameObject - defaultColor : Color - activeColor : Color - compatibleColor : Color - incompatibleColor : Color - canHoldJoint : bool = false - occupyingObject : GameObject - isOccupied : bool = false - holdedJoint : GameObject - isJointOccupied : bool = false - CanAccept(otherSocket:ISocket) : bool + CanAccept(otherSocket:ISocket, isJoint:bool) : bool + GetNormal() : Vector3 + Highlight(state:HighlightState) : void - Update() : void + GetTransform() : Transform + GetSocketType() : SocketType + GetSocketRadius() : float + SetSocketRadius(radius:float) : void + IsOccupied() : bool + IsJointOccupied() : bool + GetOccupyingObject() : GameObject + GetJointObject() : GameObject + SetOccupied(obj:GameObject) : void + SetJointOccupied(jointObject:GameObject) : void + ReleaseJoint() : void + Release() : void } enum HighlightState { Default, Active, Compatible, Incompatible, } MonoBehaviour <|-- SocketPoint ISocket <|-- SocketPoint @enduml