@startuml class AttachableBlock { - blockType : BlockType - socketContainer : SocketContainer - connectedBlocks : List - attachedJoints : List + GetConnectedBlocks() : List + GetAttachedJoints() : List + SetBlockType(BlockType:BlockType) : void + DisconnectFrom(otherBlock:AttachableBlock) : void + UnregisterJoint(joint:JointBlock) : void - Awake() : void + GetSocketContainer() : SocketContainer + ConnectTo(otherBlock:AttachableBlock, mySocket:SocketPoint, theirSocket:SocketPoint) : void + RegisterJoint(joint:JointBlock) : void } enum BlockType { Regular, Link, Gear, Structural, } MonoBehaviour <|-- AttachableBlock @enduml