void UnloadStaticPassengers() { while (!_staticPassengers.Empty()) { WorldObject obj = _staticPassengers.First(); obj.AddObjectToRemoveList(); // also removes from _staticPassengers } }
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); }
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(); }