public PortalToObjective(PortalToObjective other)
     : base(other.Spawn)
 {
     Name       = other.Name;
     _target    = other._target;
     _targetPos = other._targetPos;
 }
        /// <summary>
        /// Invoked when the objective is locked, spawning the portal to warcamp.
        /// </summary>
        internal void ObjectiveLocked()
        {
            if (_objectivePortal != null)
            {
                return;
            }

            if (!Load()) // Useful when database has been updated at runtime
            {
                return;
            }

            if (_objectivePortal == null && _region.GetTier() < 2)
            {
                _objectivePortal = new PortalToWarcamp(_objectivePortalData, _orderPortalData, _destroPortalData);
                _region.AddObject(_objectivePortal, _objectivePortalData.ZoneId);
            }

            if (_orderPortal != null)
            {
                _orderPortal.Dispose();
                _destroPortal.Dispose();
                _orderPortal  = null;
                _destroPortal = null;
            }
        }
        /// <summary>
        /// Invoked when the objective is locked, initializing the portals in warcamps.
        /// They will be spawned depending on flag state.
        /// </summary>
        internal void ObjectiveUnlocked()
        {
            if (!Load()) // Useful when database has been updated at runtime
            {
                return;
            }

            if (_objectivePortal != null)
            {
                _region.RemoveObject(_objectivePortal);
                _objectivePortal = null;
            }

            if (_orderPortal == null)
            {
                _orderPortal  = new PortalToObjective(_orderPortalData, _objectivePortalData, _objective.Name);
                _destroPortal = new PortalToObjective(_destroPortalData, _objectivePortalData, _objective.Name);
            }
            int i = 0;
        }
 /// <summary>
 /// Spawns or despawns given portal.
 /// </summary>
 /// <param name="portal">Portal to spawn or despawn</param>
 /// <param name="portalData">Data bound to the portal</param>
 /// <param name="spawn">True to spawn the portal, false to despawn it</param>
 private void UpdatePortalSpawn(PortalToObjective portal, BattlefrontObject portalData, bool spawn)
 {
     if (portal.IsInWorld() != spawn)
     {
         if (spawn)
         {
             PortalToObjective clone = new PortalToObjective(portal);
             if (portalData.Realm == (ushort)Realms.REALMS_REALM_ORDER)
             {
                 _orderPortal = clone;
             }
             else
             {
                 _destroPortal = clone;
             }
             _region.AddObject(clone, portalData.ZoneId);
         }
         else
         {
             _region.RemoveObject(portal);
         }
     }
 }