@startuml class GhostManager { + {static} getInstance() : GhostManager + SetMovementStrategy(strategy:IGhostMovementStrategy) : void + setDrag(drag:bool) : void + ForcePlace() : void + SetupBlock(blockData:BlockData) : void + SetupExistingBlock(sourceObject:GameObject, strategy:IGhostMovementStrategy) : void + HasActiveGhost() : bool + isGhost(obj:GameObject) : bool + ClearGhost() : void + ClearGhostData() : void + onClearAddListener(action:UnityAction) : void + setupBlock(blockData:BlockData) : void + clearGhost() : void + clearGhostData() : void } MonoBehaviour <|-- GhostManager GhostManager --> "GhostTransform" Transform @enduml