Example #1
0
 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;
         }
     }
 }
Example #2
0
            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
                }
            }