public void RemoveChunk(VoxelChunk chunk) { VoxelChunk removed = null; while (!ChunkMap.TryRemove(chunk.ID, out removed)) { Thread.Sleep(10); } HashSet <Body> locatables = new HashSet <Body>(); chunkManager.Components.CollisionManager.GetObjectsIntersecting(chunk.GetBoundingBox(), locatables, CollisionManager.CollisionType.Static | CollisionManager.CollisionType.Dynamic); foreach (Body component in locatables) { component.IsDead = true; } chunk.Destroy(chunkManager.Graphics); }
public void RemoveChunk(VoxelChunk chunk) { VoxelChunk removed = null; while (!ChunkMap.TryRemove(chunk.ID, out removed)) { Thread.Sleep(10); } HashSet <IBoundedObject> locatables = new HashSet <IBoundedObject>(); chunkManager.Components.CollisionManager.GetObjectsIntersecting(chunk.GetBoundingBox(), locatables, CollisionManager.CollisionType.Static | CollisionManager.CollisionType.Dynamic); foreach (var component in locatables.Where(o => o is Body).Select(o => o as Body)) { component.Die(); } chunk.Destroy(chunkManager.Graphics); }
public void RemoveChunk(VoxelChunk chunk) { VoxelChunk removed = null; while (!ChunkMap.TryRemove(chunk.ID, out removed)) { Thread.Sleep(10); } HashSet<Body> locatables = new HashSet<Body>(); chunkManager.Components.CollisionManager.GetObjectsIntersecting(chunk.GetBoundingBox(), locatables, CollisionManager.CollisionType.Static | CollisionManager.CollisionType.Dynamic); foreach(Body component in locatables) { component.IsDead = true; } chunk.Destroy(chunkManager.Graphics); }