@startuml interface ISocket { GetTransform() : Transform GetSocketType() : SocketType GetSocketRadius() : float IsOccupied() : bool GetOccupyingObject() : GameObject SetOccupied(obj:GameObject) : void Release() : void CanAccept(otherSocket:ISocket, isJoint:bool) : bool GetNormal() : Vector3 } enum SocketType { Regular, JointHost, JointEnd, Universal, } @enduml