public List <Entity> RevokeEntitySimulationFor(Player player, VisibleCell[] removed)
        {
            List <Entity> revokedEntities = new List <Entity>();

            foreach (VisibleCell cell in removed)
            {
                List <Entity> entities;

                lock (entitiesByAbsoluteCell)
                {
                    if (entitiesByAbsoluteCell.TryGetValue(cell.AbsoluteCellEntity, out entities))
                    {
                        foreach (Entity entity in entities)
                        {
                            if (entity.Level <= cell.Level && simulationOwnership.RevokeIfOwner(entity.Guid, player))
                            {
                                revokedEntities.Add(entity);
                            }
                        }
                    }
                }
            }

            return(revokedEntities);
        }
Exemple #2
0
        public List <Entity> RevokeEntitySimulationFor(Player player, AbsoluteEntityCell[] removed)
        {
            List <Entity> revokedEntities = new List <Entity>();

            foreach (AbsoluteEntityCell cell in removed)
            {
                List <Entity> entities;

                lock (entitiesByAbsoluteCell)
                {
                    if (GetEntities(cell, out entities))
                    {
                        revokedEntities.AddRange(
                            entities.Where(entity => entity.Level <= cell.Level && simulationOwnership.RevokeIfOwner(entity.Guid, player)));
                    }
                }
            }

            return(revokedEntities);
        }