예제 #1
0
        /// <summary>
        /// Handles the cleanup process for a landblock
        /// This method is called by LandblockManager
        /// </summary>
        public void Unload()
        {
            var landblockID = Id.Raw | 0xFFFF;

            //log.Debug($"Landblock.Unload({landblockID:X8})");

            ProcessPendingWorldObjectAdditionsAndRemovals();

            SaveDB();

            // remove all objects
            foreach (var wo in worldObjects.ToList())
            {
                if (!wo.Value.BiotaOriginatedFromOrHasBeenSavedToDatabase())
                {
                    wo.Value.Destroy(false);
                }
                else
                {
                    RemoveWorldObjectInternal(wo.Key);
                }
            }

            ProcessPendingWorldObjectAdditionsAndRemovals();

            actionQueue.Clear();

            // remove physics landblock
            LScape.unload_landblock(landblockID);
        }
예제 #2
0
        /// <summary>
        /// Handles the cleanup process for a landblock
        /// This method is called by LandblockManager
        /// </summary>
        public void Unload()
        {
            var landblockID = Id.Raw | 0xFFFF;

            //Console.WriteLine($"Landblock.Unload({landblockID:X})");
            SaveDB();

            // remove all objects
            foreach (var wo in worldObjects.Keys.ToList())
            {
                RemoveWorldObjectInternal(wo);
            }

            // remove physics landblock
            LScape.unload_landblock(landblockID);

            // dungeon landblocks do not handle adjacents
            if (_landblock.IsDungeon)
            {
                return;
            }

            // notify adjacents
            foreach (var adjacent in adjacencies.Where(adj => adj.Value != null))
            {
                adjacent.Value.UnloadAdjacent(AdjacencyHelper.GetInverse(adjacent.Key), this);
            }

            // TODO: cleanup physics landblock references
        }
예제 #3
0
        /// <summary>
        /// Handles the cleanup process for a landblock
        /// This method is called by LandblockManager
        /// </summary>
        public void Unload()
        {
            var landblockID = Id.Raw | 0xFFFF;

            log.Debug($"Landblock.Unload({landblockID:X})");

            SaveDB();

            // remove all objects
            foreach (var wo in worldObjects.Keys.ToList())
            {
                RemoveWorldObjectInternal(wo);
            }

            // remove physics landblock
            LScape.unload_landblock(landblockID);
        }