public static bool DeregisterInRegions(Thing thing, Map map) { if (!ListerThings.EverListable(thing.def, ListerThingsUse.Region)) { return(false); } int tID = Thread.CurrentThread.ManagedThreadId; if (!tmpRegionsLists.TryGetValue(tID, out List <Region> tmpRegions)) { tmpRegions = new List <Region>(); tmpRegionsLists[tID] = tmpRegions; } else { tmpRegions.Clear(); } RegionListersUpdater.GetTouchableRegions(thing, map, tmpRegions, true); for (int i = 0; i < tmpRegions.Count; i++) { ListerThings listerThings = tmpRegions[i].ListerThings; lock (listerThings) { if (listerThings.Contains(thing)) { listerThings.Remove(thing); } } } return(false); }
public static void DeregisterInRegions(Thing thing, Map map) { ThingDef def = thing.def; if (!ListerThings.EverListable(def, ListerThingsUse.Region)) { return; } GetTouchableRegions(thing, map, tmpRegions, true); for (int i = 0; i < tmpRegions.Count; i++) { ListerThings listerThings = tmpRegions[i].ListerThings; if (listerThings.Contains(thing)) { listerThings.Remove(thing); } } tmpRegions.Clear(); }
public static bool DeregisterInRegions(Thing thing, Map map) { if (!ListerThings.EverListable(thing.def, ListerThingsUse.Region)) { return(false); } List <Region> tmpRegions = new List <Region>(); RegionListersUpdater.GetTouchableRegions(thing, map, tmpRegions, true); for (int i = 0; i < tmpRegions.Count; i++) { ListerThings listerThings = tmpRegions[i].ListerThings; lock (listerThings) { if (listerThings.Contains(thing)) { listerThings.Remove(thing); } } } return(false); }