public override WallGenerator GetWallGenerator(WallGenerator wallGenerator)
 {
     Random = wallGenerator.Random;
     if (wallGenerator is Structure structure && structure.Override)
     {
         if (structure.PropID.HasValue)
         {
             PropID = structure.PropID.Value;
         }
         if (structure.LightID.HasValue)
         {
             LightID = structure.LightID.Value;
         }
         if (structure.Type.HasValue)
         {
             Type = structure.Type.Value;
         }
         if (structure.Value.HasValue)
         {
             Value = structure.Value.Value;
         }
         if (structure.Speed.HasValue)
         {
             Speed = structure.Speed.Value;
         }
         if (structure.Step.HasValue)
         {
             Step = structure.Step.Value;
         }
         if (structure.Prop.HasValue)
         {
             Step = structure.Prop.Value;
         }
         if (structure.PropMult.HasValue)
         {
             PropMult = structure.PropMult.Value;
         }
         if (structure.SpeedMult.HasValue)
         {
             SpeedMult = structure.SpeedMult.Value;
         }
         if (structure.StepMult.HasValue)
         {
             StepMult = structure.StepMult.Value;
         }
         if (structure.Direction.HasValue)
         {
             Direction = structure.Direction.Value;
         }
         if (structure.CounterLock.HasValue)
         {
             CounterLock = structure.CounterLock.Value;
         }
         if (structure.Reset.HasValue)
         {
             Reset = structure.Reset.Value;
         }
     }
     return(base.GetWallGenerator(wallGenerator));
 }
 public override WallGenerator GetWallGenerator(WallGenerator wallGenerator)
 {
     Random = wallGenerator.Random;
     Structures.ForEach(t => t.GetWallGenerator(wallGenerator));
     return(this);
 }