예제 #1
0
        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);
        }
예제 #2
0
        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);
        }