public bool RemoveRandomParticle(ParticleCollection sector) { // If no sector is provided to remove from, semirandomly pick a sector from the last update. if (sector == null) { if (_SectorsFromLastUpdate.Count == 0) { return(false); } var index = RNG.Next(0, _SectorsFromLastUpdate.Count); sector = _SectorsFromLastUpdate.GetBuffer()[index]; } if (sector.Count == 0) { return(false); } var particleIndex = RNG.Next(0, sector.Count); sector.RemoveAt(particleIndex); return(true); }