public void BeginPlacing(PlacementInformation info)
        {
            Clear();

            IoCManager.Resolve <IUserInterfaceManager>().DragInfo.Reset();

            CurrentPermission = info;

            if (!_modeDictionary.Any(pair => pair.Key.Equals(CurrentPermission.PlacementOption)))
            {
                Clear();
                return;
            }

            Type modeType = _modeDictionary.First(pair => pair.Key.Equals(CurrentPermission.PlacementOption)).Value;

            CurrentMode = (PlacementMode)Activator.CreateInstance(modeType, this);

            if (info.IsTile)
            {
                PreparePlacementTile((Tile)info.TileType);
            }
            else
            {
                PreparePlacement(info.EntityType);
            }
        }
 public void Clear()
 {
     CurrentBaseSprite = null;
     CurrentPrototype  = null;
     CurrentPermission = null;
     CurrentMode       = null;
     if (PlacementCanceled != null && IsActive && !Eraser)
     {
         PlacementCanceled(this, null);
     }
     IsActive = false;
     Eraser   = false;
 }