예제 #1
0
        public bool AddVisibleMapId(uint visibleMapId, TerrainSwapInfo visibleMapInfo, int references = 1)
        {
            if (VisibleMapIds.ContainsKey(visibleMapId))
            {
                return(false);
            }

            VisibleMapIds.Add(visibleMapId, new VisibleMapIdRef(references, visibleMapInfo));
            return(true);
        }
예제 #2
0
        public static void RemoveVisibleMapId(WorldObject obj, uint visibleMapId)
        {
            TerrainSwapInfo terrainSwapInfo = Global.ObjectMgr.GetTerrainSwapInfo(visibleMapId);
            bool            changed         = obj.GetPhaseShift().RemoveVisibleMapId(visibleMapId);

            foreach (uint uiWorldMapAreaIDSwap in terrainSwapInfo.UiMapPhaseIDs)
            {
                changed = obj.GetPhaseShift().RemoveUiMapPhaseId(uiWorldMapAreaIDSwap) || changed;
            }

            Unit unit = obj.ToUnit();

            if (unit)
            {
                ForAllControlled(unit, controlled =>
                {
                    RemoveVisibleMapId(controlled, visibleMapId);
                });
            }

            UpdateVisibilityIfNeeded(obj, false, changed);
        }
예제 #3
0
 public VisibleMapIdRef(int references, TerrainSwapInfo visibleMapInfo)
 {
     References     = references;
     VisibleMapInfo = visibleMapInfo;
 }
예제 #4
0
 public bool AddVisibleMapId(uint visibleMapId, TerrainSwapInfo visibleMapInfo, int references = 1)
 {
     VisibleMapIds.Add(visibleMapId, new VisibleMapIdRef(references, visibleMapInfo));
     return(true); //Tryadd?  maybe Concurrent
 }