public static int Compare(SpatialManager.CollisionResult a, SpatialManager.CollisionResult b) { return a.Distance.CompareTo(b.Distance); }
public override void ExitScreen() { if (this.MultiThread) { // this.ShipUpdateThread.Abort(); this.WorkerThread.Abort(); foreach (Thread thread in this.SystemUpdateThreadList) thread.Abort(); } this.EmpireUI.empire = (Empire)null; this.EmpireUI = (EmpireUIOverlay)null; UniverseScreen.DeepSpaceManager.CollidableObjects.Clear(); UniverseScreen.DeepSpaceManager.CollidableProjectiles.Clear(); UniverseScreen.ShipSpatialManager.CollidableObjects.Clear(); this.ScreenManager.Music.Stop(AudioStopOptions.Immediate); this.NebulousShit.Clear(); this.bloomComponent = (BloomComponent)null; this.bg3d.BGItems.Clear(); this.bg3d = (Background3D)null; this.playerShip = (Ship)null; this.ShipToView = (Ship)null; foreach (Ship ship in (List<Ship>)this.MasterShipList) ship.TotallyRemove(); this.MasterShipList.ApplyPendingRemovals(); this.MasterShipList.Clear(); foreach (SolarSystem solarSystem in UniverseScreen.SolarSystemList) { solarSystem.spatialManager.CollidableProjectiles.Clear(); solarSystem.spatialManager.CollidableObjects.Clear(); solarSystem.spatialManager.ClearBuckets(); solarSystem.spatialManager.Destroy(); solarSystem.spatialManager = (SpatialManager)null; solarSystem.FiveClosestSystems.Clear(); foreach (Planet planet in solarSystem.PlanetList) { planet.TilesList = new List<PlanetGridSquare>(); if (planet.SO != null) { planet.SO.Clear(); this.ScreenManager.inter.ObjectManager.Remove((ISceneObject)planet.SO); planet.SO = (SceneObject)null; } } foreach (Asteroid asteroid in (List<Asteroid>)solarSystem.AsteroidsList) { if (asteroid.GetSO() != null) { asteroid.GetSO().Clear(); this.ScreenManager.inter.ObjectManager.Remove((ISceneObject)asteroid.GetSO()); } } solarSystem.AsteroidsList.Clear(); foreach (Moon moon in solarSystem.MoonList) { if (moon.GetSO() != null) { moon.GetSO().Clear(); this.ScreenManager.inter.ObjectManager.Remove((ISceneObject)moon.GetSO()); } } solarSystem.MoonList.Clear(); } foreach (Empire empire in EmpireManager.EmpireList) empire.CleanOut(); foreach (SpaceJunk spaceJunk in (List<SpaceJunk>)UniverseScreen.JunkList) { spaceJunk.trailEmitter = (ParticleEmitter)null; spaceJunk.JunkSO.Clear(); this.ScreenManager.inter.ObjectManager.Remove((ISceneObject)spaceJunk.JunkSO); spaceJunk.JunkSO = (SceneObject)null; } UniverseScreen.JunkList.Clear(); this.SelectedShip = (Ship)null; this.SelectedFleet = (Fleet)null; this.SelectedPlanet = (Planet)null; this.SelectedSystem = (SolarSystem)null; ShieldManager.shieldList.Clear(); ShieldManager.PlanetaryShieldList.Clear(); this.PlanetsDict.Clear(); this.ClickableFleetsList.Clear(); this.ClickableShipsList.Clear(); this.ClickPlanetList.Clear(); this.ClickableSystems.Clear(); UniverseScreen.DeepSpaceManager.ClearBuckets(); UniverseScreen.DeepSpaceManager.CollidableObjects.Clear(); UniverseScreen.DeepSpaceManager.CollidableObjects.Clear(); UniverseScreen.DeepSpaceManager.CollidableProjectiles.Clear(); UniverseScreen.DeepSpaceManager.ClearBuckets(); UniverseScreen.DeepSpaceManager.Destroy(); UniverseScreen.DeepSpaceManager = (SpatialManager)null; UniverseScreen.SolarSystemList.Clear(); this.starfield.UnloadContent(); this.starfield.Dispose(); UniverseScreen.SolarSystemList.Clear(); this.beamflashes.UnloadContent(); this.explosionParticles.UnloadContent(); this.photonExplosionParticles.UnloadContent(); this.explosionSmokeParticles.UnloadContent(); this.projectileTrailParticles.UnloadContent(); this.fireTrailParticles.UnloadContent(); this.smokePlumeParticles.UnloadContent(); this.fireParticles.UnloadContent(); this.engineTrailParticles.UnloadContent(); this.flameParticles.UnloadContent(); this.sparks.UnloadContent(); this.lightning.UnloadContent(); this.flash.UnloadContent(); this.star_particles.UnloadContent(); this.neb_particles.UnloadContent(); this.SolarSystemDict.Clear(); ShipDesignScreen.screen = (UniverseScreen)null; Fleet.screen = (UniverseScreen)null; Bomb.screen = (UniverseScreen)null; Anomaly.screen = (UniverseScreen)null; PlanetScreen.screen = (UniverseScreen)null; MinimapButtons.screen = (UniverseScreen)null; Projectile.contentManager = this.ScreenManager.Content; Projectile.universeScreen = (UniverseScreen)null; ShipModule.universeScreen = (UniverseScreen)null; Asteroid.universeScreen = (UniverseScreen)null; Empire.universeScreen = (UniverseScreen)null; SpaceJunk.universeScreen = (UniverseScreen)null; ResourceManager.universeScreen = (UniverseScreen)null; Planet.universeScreen = (UniverseScreen)null; Weapon.universeScreen = (UniverseScreen)null; Ship.universeScreen = (UniverseScreen)null; ArtificialIntelligence.universeScreen = (UniverseScreen)null; MissileAI.universeScreen = (UniverseScreen)null; Moon.universeScreen = (UniverseScreen)null; CombatScreen.universeScreen = (UniverseScreen)null; MuzzleFlashManager.universeScreen = (UniverseScreen)null; FleetDesignScreen.screen = (UniverseScreen)null; ExplosionManager.universeScreen = (UniverseScreen)null; FTLManager.universeScreen = (UniverseScreen)null; DroneAI.universeScreen = (UniverseScreen)null; StatTracker.SnapshotsDict.Clear(); EmpireManager.EmpireList.Clear(); this.ScreenManager.inter.Unload(); //GC.Collect(2, GCCollectionMode.Optimized); this.Dispose(); base.ExitScreen(); }
protected void Dispose(bool disposing) { if (!disposed) { if (disposing) { if (this.ShipList != null) this.ShipList.Dispose(); if (this.AsteroidsList != null) this.AsteroidsList.Dispose(); if (this.spatialManager != null) this.spatialManager.Dispose(); } this.ShipList = null; this.AsteroidsList = null; this.spatialManager = null; this.disposed = true; } }