private void DeleteReverse(string id, int remove, IMyCubeGrid grid) { int count = 0; Sandbox.ModAPI.Ingame.IMyGridTerminalSystem gridTerminal = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); List <IMyTerminalBlock> blocksToRemove = new List <IMyTerminalBlock>(); for (int r = gridTerminal.Blocks.Count - 1; r >= 0; r--) { IMyTerminalBlock block = (IMyTerminalBlock)gridTerminal.Blocks[r]; if (block.BlockDefinition.TypeId.ToString().Contains(id)) { blocksToRemove.Add(block); count++; } if (count == remove) { break; } } /* * List<MyObjectBuilder_CubeBlock> blocksToRemove = new List<MyObjectBuilder_CubeBlock>(); * for (int r = gridBuilder.CubeBlocks.Count - 1; r >= 0; r--) * { * MyObjectBuilder_CubeBlock block = gridBuilder.CubeBlocks[r]; * if (block.GetId().ToString().Contains(id)) * { * blocksToRemove.Add(block); * count++; * } * * if (count == remove) * break; * } */ if (blocksToRemove.Count < 1) { return; } List <VRageMath.Vector3I> razeList = new List <VRageMath.Vector3I>(); foreach (IMyTerminalBlock block in blocksToRemove) { razeList.Add(block.Min); } Wrapper.GameAction(() => { grid.RazeBlocks(razeList); }); }
private void DeleteReverse(SettingsBlockEnforcementItem blockEnforcementSetting, int remove, IMyCubeGrid grid) { int count = 0; IMyGridTerminalSystem gridTerminal = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); List <Sandbox.ModAPI.IMyTerminalBlock> blocksToRemove = new List <Sandbox.ModAPI.IMyTerminalBlock>( ); List <IMyTerminalBlock> blockstoProcess = new List <IMyTerminalBlock>(); gridTerminal.GetBlocksOfType <IMyTerminalBlock>(blockstoProcess); for (int r = blockstoProcess.Count - 1; r >= 0; r--) { Sandbox.ModAPI.IMyTerminalBlock block = (Sandbox.ModAPI.IMyTerminalBlock)blockstoProcess[r]; switch (blockEnforcementSetting.Mode) { case SettingsBlockEnforcementItem.EnforcementMode.BlockSubtypeId: if (!string.IsNullOrEmpty(block.BlockDefinition.SubtypeId) && block.BlockDefinition.SubtypeId.Contains(blockEnforcementSetting.BlockSubtypeId)) { blocksToRemove.Add(block); count++; } break; case SettingsBlockEnforcementItem.EnforcementMode.BlockTypeId: if (block.BlockDefinition.TypeIdString.Contains(blockEnforcementSetting.BlockTypeId)) { blocksToRemove.Add(block); count++; } break; } if (count == remove) { break; } } /* * List<MyObjectBuilder_CubeBlock> blocksToRemove = new List<MyObjectBuilder_CubeBlock>(); * for (int r = gridBuilder.CubeBlocks.Count - 1; r >= 0; r--) * { * MyObjectBuilder_CubeBlock block = gridBuilder.CubeBlocks[r]; * if (block.GetId().ToString().Contains(id)) * { * blocksToRemove.Add(block); * count++; * } * * if (count == remove) * break; * } */ if (blocksToRemove.Count < 1) { return; } List <Vector3I> razeList = new List <Vector3I>( ); foreach (Sandbox.ModAPI.IMyTerminalBlock block in blocksToRemove) { razeList.Add(block.Min); } Wrapper.GameAction(() => { grid.RazeBlocks(razeList); }); }
private void DeleteReverse(string id, int remove, IMyCubeGrid grid) { int count = 0; Sandbox.ModAPI.Ingame.IMyGridTerminalSystem gridTerminal = MyAPIGateway.TerminalActionsHelper.GetTerminalSystemForGrid(grid); List<IMyTerminalBlock> blocksToRemove = new List<IMyTerminalBlock>(); for (int r = gridTerminal.Blocks.Count - 1; r >= 0; r--) { IMyTerminalBlock block = (IMyTerminalBlock)gridTerminal.Blocks[r]; if (block.BlockDefinition.TypeId.ToString().Contains(id)) { blocksToRemove.Add(block); count++; } if (count == remove) break; } /* List<MyObjectBuilder_CubeBlock> blocksToRemove = new List<MyObjectBuilder_CubeBlock>(); for (int r = gridBuilder.CubeBlocks.Count - 1; r >= 0; r--) { MyObjectBuilder_CubeBlock block = gridBuilder.CubeBlocks[r]; if (block.GetId().ToString().Contains(id)) { blocksToRemove.Add(block); count++; } if (count == remove) break; } */ if (blocksToRemove.Count < 1) return; List<VRageMath.Vector3I> razeList = new List<VRageMath.Vector3I>(); foreach (IMyTerminalBlock block in blocksToRemove) { razeList.Add(block.Min); } Wrapper.GameAction(() => { grid.RazeBlocks(razeList); }); }