public void Notify_BuildingDeSpawned(Building b) { if (MeditationUtility.CountsAsArtificialBuilding(b)) { artificialBuildingsPerCell.Clear(); } }
public List <Thing> GetForCell(IntVec3 cell, float radius) { CellWithRadius key = new CellWithRadius(cell, radius); if (!artificialBuildingsPerCell.TryGetValue(key, out List <Thing> value)) { value = new List <Thing>(); foreach (Thing item in GenRadial.RadialDistinctThingsAround(cell, map, radius, useCenter: false)) { if (MeditationUtility.CountsAsArtificialBuilding(item)) { value.Add(item); } } artificialBuildingsPerCell[key] = value; } return(value); }
public bool WillBeAffectedBy(ThingDef def, Faction faction, IntVec3 pos, Rot4 rotation) { CellRect cellRect = GenAdj.OccupiedRect(pos, rotation, def.size); foreach (FocusStrengthOffset offset in Props.offsets) { FocusStrengthOffset_ArtificialBuildings focusStrengthOffset_ArtificialBuildings; if ((focusStrengthOffset_ArtificialBuildings = (offset as FocusStrengthOffset_ArtificialBuildings)) != null && MeditationUtility.CountsAsArtificialBuilding(def, faction) && cellRect.ClosestCellTo(parent.Position).DistanceTo(parent.Position) <= focusStrengthOffset_ArtificialBuildings.radius) { return(true); } } return(false); }