Example #1
0
 /// <summary>
 /// Return all <see cref="GridEntity"/>'s in map that satisfy <see cref="ISearchCheck"/>.
 /// </summary>
 public void Search(Vector3 vector, float radius, ISearchCheck check, out List <GridEntity> intersectedEntities)
 {
     intersectedEntities = new List <GridEntity>();
     for (float z = vector.Z - radius; z <= vector.Z + radius; z += MapCell.Size)
     {
         for (float x = vector.X - radius; x <= vector.X + radius; x += MapCell.Size)
         {
             var searchVector = new Vector3(x, 0f, z);
             GetGrid(searchVector).Search(searchVector, check, intersectedEntities);
         }
     }
 }
Example #2
0
        /// <summary>
        /// Return all <see cref="GridEntity"/>'s in map that satisfy <see cref="ISearchCheck"/>.
        /// </summary>
        public void Search(Vector3 vector, float radius, ISearchCheck check, out List <GridEntity> intersectedEntities)
        {
            // negative radius is unlimited distance
            if (radius < 0)
            {
                intersectedEntities = entities.Values.ToList();
                return;
            }

            intersectedEntities = new List <GridEntity>();
            for (float z = vector.Z - radius; z <= vector.Z + radius; z += MapCell.Size)
            {
                for (float x = vector.X - radius; x <= vector.X + radius; x += MapCell.Size)
                {
                    var searchVector = new Vector3(x, 0f, z);
                    GetGrid(searchVector).Search(searchVector, check, intersectedEntities);
                }
            }
        }
Example #3
0
        /// <summary>
        /// Return all <see cref="GridEntity"/>'s in map that satisfy <see cref="ISearchCheck"/>.
        /// </summary>
        public void Search(Vector3 vector, float radius, ISearchCheck check, out List <GridEntity> intersectedEntities)
        {
            // negative radius is unlimited distance
            if (radius < 0)
            {
                intersectedEntities = entities.Values.ToList();
                return;
            }

            intersectedEntities = new List <GridEntity>();
            for (float z = vector.Z - radius; z < vector.Z + radius + MapDefines.GridCellSize; z += MapDefines.GridCellSize)
            {
                for (float x = vector.X - radius; x < vector.X + radius + MapDefines.GridCellSize; x += MapDefines.GridCellSize)
                {
                    var searchVector = new Vector3(x, 0f, z);
                    // don't activate new grids during serch
                    GetGrid(searchVector)?.Search(searchVector, check, intersectedEntities);
                }
            }
        }
Example #4
0
 /// <summary>
 /// Return all <see cref="GridEntity"/>'s in cell that satisfy <see cref="ISearchCheck"/>.
 /// </summary>
 public void Search(ISearchCheck check, List <GridEntity> intersectedEntities)
 {
     intersectedEntities.AddRange(entities.Where(check.CheckEntity));
 }
Example #5
0
 /// <summary>
 /// Return all <see cref="GridEntity"/>'s in grid that satisfy <see cref="ISearchCheck"/>.
 /// </summary>
 public void Search(Vector3 position, ISearchCheck check, List <GridEntity> intersectedEntities)
 {
     GetCell(position).Search(check, intersectedEntities);
 }