Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.92 KB | None | 0 0
  1. private List<Chunk> GetSurroundingChunks(Vector3Int position, int maxRange) {
  2.         maxRange++;
  3.         List<Chunk> chunks = new List<Chunk>();
  4.         Vector3 localPosition = Chunk.WorldToLocalSpace(position);
  5.         if (localPosition.x + maxRange > Chunk.chunkSize) {
  6.             if (localPosition.y + maxRange > Chunk.chunkSize) {
  7.                 if (localPosition.z + maxRange > Chunk.chunkSize) {
  8.                     chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y + maxRange, position.z + maxRange));
  9.                 }
  10.                 else if (localPosition.z - maxRange < 0) {
  11.                     chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y + maxRange, position.z - maxRange));
  12.                 }
  13.                 chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y + maxRange, position.z));
  14.             }
  15.             else if (localPosition.y - maxRange < 0) {
  16.                 if (localPosition.z + maxRange > Chunk.chunkSize) {
  17.                     chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y - maxRange, position.z + maxRange));
  18.                 }
  19.                 else if (localPosition.z - maxRange < 0) {
  20.                     chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y - maxRange, position.z - maxRange));
  21.                 }
  22.                 chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y - maxRange, position.z));
  23.             }
  24.             if (localPosition.z + maxRange > Chunk.chunkSize) {
  25.                 chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y, position.z + maxRange));
  26.             }
  27.             else if (localPosition.z - maxRange < 0) {
  28.                 chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y, position.z - maxRange));
  29.             }
  30.             chunks.Add(GetChunkWorldSpace(position.x + maxRange, position.y, position.z));
  31.         }
  32.         else if (localPosition.x - maxRange < 0) {
  33.             if (localPosition.y + maxRange > Chunk.chunkSize) {
  34.                 if (localPosition.z + maxRange > Chunk.chunkSize) {
  35.                     chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y + maxRange, position.z + maxRange));
  36.                 }
  37.                 else if (localPosition.z - maxRange < 0) {
  38.                     chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y + maxRange, position.z - maxRange));
  39.                 }
  40.                 chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y + maxRange, position.z));
  41.             }
  42.             else if (localPosition.y - maxRange < 0) {
  43.                 if (localPosition.z + maxRange > Chunk.chunkSize) {
  44.                     chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y - maxRange, position.z + maxRange));
  45.                 }
  46.                 else if (localPosition.z - maxRange < 0) {
  47.                     chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y - maxRange, position.z - maxRange));
  48.                 }
  49.                 chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y - maxRange, position.z));
  50.             }
  51.             if (localPosition.z + maxRange > Chunk.chunkSize) {
  52.                 chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y, position.z + maxRange));
  53.             }
  54.             else if (localPosition.z - maxRange < 0) {
  55.                 chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y, position.z - maxRange));
  56.             }
  57.             chunks.Add(GetChunkWorldSpace(position.x - maxRange, position.y, position.z));
  58.         }
  59.         if (localPosition.y + maxRange > Chunk.chunkSize) {
  60.             if (localPosition.z + maxRange > Chunk.chunkSize) {
  61.                 chunks.Add(GetChunkWorldSpace(position.x, position.y + maxRange, position.z + maxRange));
  62.             }
  63.             else if (localPosition.z - maxRange < 0) {
  64.                 chunks.Add(GetChunkWorldSpace(position.x, position.y + maxRange, position.z - maxRange));
  65.             }
  66.             chunks.Add(GetChunkWorldSpace(position.x, position.y + maxRange, position.z));
  67.         }
  68.         else if (localPosition.y - maxRange < 0) {
  69.             if (localPosition.z + maxRange > Chunk.chunkSize) {
  70.                 chunks.Add(GetChunkWorldSpace(position.x, position.y - maxRange, position.z + maxRange));
  71.             }
  72.             else if (localPosition.z - maxRange < 0) {
  73.                 chunks.Add(GetChunkWorldSpace(position.x, position.y - maxRange, position.z - maxRange));
  74.             }
  75.             chunks.Add(GetChunkWorldSpace(position.x, position.y - maxRange, position.z));
  76.         }
  77.         if (localPosition.z + maxRange > Chunk.chunkSize) {
  78.             chunks.Add(GetChunkWorldSpace(position.x, position.y, position.z + maxRange));
  79.         }
  80.         else if (localPosition.z - maxRange < 0) {
  81.             chunks.Add(GetChunkWorldSpace(position.x, position.y, position.z - maxRange));
  82.         }
  83.         return chunks;
  84.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement