Beispiel #1
0
 void UnloadStaticPassengers()
 {
     while (!_staticPassengers.Empty())
     {
         WorldObject obj = _staticPassengers.First();
         obj.AddObjectToRemoveList();   // also removes from _staticPassengers
     }
 }
Beispiel #2
0
        void DelayedTeleportTransport()
        {
            if (!_delayedTeleport)
            {
                return;
            }

            var nextFrame = GetKeyFrames()[_nextFrame];

            _delayedTeleport = false;
            Map newMap = Global.MapMgr.CreateBaseMap(nextFrame.Node.MapID);

            GetMap().RemoveFromMap(this, false);
            SetMap(newMap);

            float x = nextFrame.Node.Loc.X,
                  y = nextFrame.Node.Loc.Y,
                  z = nextFrame.Node.Loc.Z,
                  o = nextFrame.InitialOrientation;

            for (var i = 0; i < _passengers.Count; ++i)
            {
                WorldObject obj = _passengers[i];

                float destX, destY, destZ, destO;
                obj.m_movementInfo.transport.pos.GetPosition(out destX, out destY, out destZ, out destO);
                TransportPosHelper.CalculatePassengerPosition(ref destX, ref destY, ref destZ, ref destO, x, y, z, o);

                switch (obj.GetTypeId())
                {
                case TypeId.Player:
                    if (!obj.ToPlayer().TeleportTo(nextFrame.Node.MapID, destX, destY, destZ, destO, TeleportToOptions.NotLeaveTransport))
                    {
                        RemovePassenger(obj);
                    }
                    break;

                case TypeId.DynamicObject:
                case TypeId.AreaTrigger:
                    obj.AddObjectToRemoveList();
                    break;

                default:
                    RemovePassenger(obj);
                    break;
                }
            }

            Relocate(x, y, z, o);
            GetMap().AddToMap(this);
        }
Beispiel #3
0
            public void DeleteGameObject(Map map)
            {
                if (BuildingInfo.Guid.IsEmpty())
                {
                    return;
                }

                foreach (var guid in BuildingInfo.Spawns)
                {
                    WorldObject obj = null;
                    switch (guid.GetHigh())
                    {
                    case HighGuid.Creature:
                        obj = map.GetCreature(guid);
                        break;

                    case HighGuid.GameObject:
                        obj = map.GetGameObject(guid);
                        break;

                    default:
                        continue;
                    }

                    if (obj)
                    {
                        obj.AddObjectToRemoveList();
                    }
                }

                BuildingInfo.Spawns.Clear();

                GameObject oldBuilding = map.GetGameObject(BuildingInfo.Guid);

                if (oldBuilding)
                {
                    oldBuilding.Delete();
                }

                BuildingInfo.Guid.Clear();
            }