示例#1
0
        private void FixNeighbors(GridRegion regionInfos, List <GridRegion> neighbors, bool down)
        {
            IAsyncMessagePostService postService = m_registryCore.RequestModuleInterface <IAsyncMessagePostService>();

            foreach (GridRegion r in neighbors)
            {
                if (m_KnownNeighbors.ContainsKey(r.RegionID))
                {
                    //Add/Remove them to/from the list
                    if (down)
                    {
                        m_KnownNeighbors[r.RegionID].Remove(regionInfos);
                    }
                    else if (m_KnownNeighbors[r.RegionID].Find(delegate(GridRegion rr)
                    {
                        if (rr.RegionID == regionInfos.RegionID)
                        {
                            return(true);
                        }
                        return(false);
                    }) == null)
                    {
                        m_KnownNeighbors[r.RegionID].Add(regionInfos);
                    }
                }

                if (postService != null)
                {
                    postService.Post(r.RegionHandle,
                                     SyncMessageHelper.NeighborChange(r.RegionID, regionInfos.RegionID, down));
                }
            }

            if (down)
            {
                m_KnownNeighbors.Remove(regionInfos.RegionID);
            }
        }