private void PlaceBlueprint(SketchEntity entity, ThingDef preferredStuffIfNone)
        {
            SketchBuildable sketchBuildable;

            if ((sketchBuildable = entity as SketchBuildable) != null && !entity.IsSameSpawnedOrBlueprintOrFrame(entity.pos + base.Position, base.Map) && !entity.IsSpawningBlocked(entity.pos + base.Position, base.Map) && BuildCopyCommandUtility.FindAllowedDesignator(sketchBuildable.Buildable) != null)
            {
                SketchThing   sketchThing;
                SketchTerrain sketchTerrain;
                if ((sketchThing = entity as SketchThing) != null && sketchThing.def.MadeFromStuff && sketchThing.stuff == null && preferredStuffIfNone != null && preferredStuffIfNone.stuffProps.CanMake(sketchThing.def))
                {
                    sketchThing.stuff = preferredStuffIfNone;
                    entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint);
                    sketchThing.stuff = null;
                }
                else if ((sketchTerrain = entity as SketchTerrain) != null && sketchTerrain.stuffForComparingSimilar == null && preferredStuffIfNone != null)
                {
                    sketchTerrain.stuffForComparingSimilar = preferredStuffIfNone;
                    entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint);
                    sketchTerrain.stuffForComparingSimilar = null;
                }
                else
                {
                    entity.Spawn(entity.pos + base.Position, base.Map, Faction.OfPlayer, Sketch.SpawnMode.Blueprint);
                }
            }
        }
 public static Building GetFirstAdjacentBuilding(SketchEntity entity, IntVec3 offset, List <Thing> monumentThings, Map map)
 {
     if (entity.IsSameSpawnedOrBlueprintOrFrame(entity.pos + offset, map))
     {
         return(null);
     }
     foreach (IntVec3 edgeCell in entity.OccupiedRect.MovedBy(offset).ExpandedBy(1).EdgeCells)
     {
         if (edgeCell.InBounds(map))
         {
             Building firstBuilding = edgeCell.GetFirstBuilding(map);
             if (firstBuilding != null && !monumentThings.Contains(firstBuilding) && (firstBuilding.Faction == null || firstBuilding.Faction == Faction.OfPlayer))
             {
                 return(firstBuilding);
             }
         }
     }
     return(null);
 }