public void DoGlow() { if (this.glower == null) { Log.Message("glower null"); } if (this.glower != null && glower.parent != null && this.Map != null) { //Log.Message("glower not null, glow center " + glowCenter); if (this.glowCenter != default(IntVec3) && this.pawn.Spawned) { this.Map.mapDrawer.MapMeshDirty(glowCenter, MapMeshFlag.Things); GlowGrid gg = this.Map.glowGrid; HashSet <CompGlower> litGlowers = Traverse.Create(root: gg).Field(name: "litGlowers").GetValue <HashSet <CompGlower> >(); litGlowers.Add(glower); Traverse.Create(root: gg).Field(name: "litGlowers").SetValue(litGlowers); gg.MarkGlowGridDirty(glowCenter); if (Current.ProgramState != ProgramState.Playing) { List <IntVec3> locs = Traverse.Create(root: gg).Field(name: "initialGlowerLocs").GetValue <List <IntVec3> >(); locs.Add(glowCenter); Traverse.Create(root: gg).Field(name: "initialGlowerLocs").SetValue(locs); } //this.Map.glowGrid.RegisterGlower(glower); this.glowing = true; } } }
private static void FixRemovedGlowers(GlowGrid instance, GlowerPorperties prop) { if (prop.glower?.parent?.Destroyed ?? true) { calculating = false; instance.MarkGlowGridDirty(prop.position.ToIntVec3()); calculating = true; } var flooder = instance.map.glowFlooder; var mapIndex = instance.map.Index; foreach (var otherGlower in instance.litGlowers) { var other = GlowerPorperties.GetGlowerPorperties(otherGlower); if (other != prop && other.drawen && other.Inersects(prop)) { FloodGlow(other, tBufferedGrid, instance.map, flooder); } } foreach (var index in prop.indices) { instance.glowGrid[index] = tBufferedGrid[index]; #if DEBUG if (Finder.drawGlowerUpdates) { instance.map.debugDrawer.FlashCell( instance.map.cellIndices.IndexToCell(index), 0.05f, "_1_", 50); } #endif } }