public void Place(ISprite sprite, bool snapToTile, int?radius) { if (Session == null) { throw new InvalidOperationException(); } placeOnTile = snapToTile; placeRadius = radius ?? -1; placeGob = new Gob(-1); placeGob.SetSprite(new Delayed <ISprite>(sprite)); var mc = Geometry.ScreenToMap(ToAbsolute(Host.MousePosition)); placeGob.Position = placeOnTile ? Geometry.Tilify(mc) : mc; Session.Objects.AddLocal(placeGob); }