예제 #1
0
        public static void UnloadChunk(int x, int z, World w)
        {
            Point pt = new Point(x, z);
            try { if (w.chunkData.ContainsKey(pt) && (w.chunkData[pt].generating || w.ChunkPopulatingCheck(x, z))) return; }
            catch { return; }

            SaveChunk(x, z, w);
            if (((int)w.SpawnX >> 4) != x || ((int)w.SpawnZ >> 4) != z) // Don't unload the spawn chunks!
            {
                w.physics.RemoveChunkChecks(x, z);
                foreach (KeyValuePair<Vector3, Container> kvp in w.containers.Where(KVP => (((int)KVP.Key.x >> 4) == x && ((int)KVP.Key.z >> 4) == z)).ToList())
                    w.containers.Remove(kvp.Key);
                lock (w.chunkData)
                    if (w.chunkData.ContainsKey(pt))
                    {
                        w.chunkData[pt].Dispose();
                        w.chunkData.Remove(pt);
                    }
            }
        }
예제 #2
0
        public static void UnloadChunk(int x, int z, World w)
        {
            Point pt = new Point(x, z);
            try { if (w.chunkData.ContainsKey(pt) && (w.chunkData[pt].generating || w.ChunkPopulatingCheck(x, z))) return; }
            catch { return; }

            SaveChunk(x, z, w);
            if (((int)w.SpawnX + 1 >> 4) != x || ((int)w.SpawnZ + 1 >> 4) != z) // Don't unload the spawn chunks!
            {
                w.physics.RemoveChunkChecks(x, z);
                lock (w.chunkData)
                    if (w.chunkData.ContainsKey(pt))
                    {
                        w.chunkData[pt].Dispose();
                        w.chunkData.Remove(pt);
                    }
            }
        }