コード例 #1
0
ファイル: MainGame.cs プロジェクト: littlebeast/Outpost
 void recenterMap()
 {
     IntVector3 prevCenter = mapOffset + new IntVector3(mapCenter);
     IntVector3 difference = prevCenter - player.chunk;
     Chunk[, ,] newMap = new Chunk[mapSize, mapSize, mapSize];
     for (int x = 0; x < mapSize; x++)
     {
         for (int y = 0; y < mapSize; y++)
         {
             for (int z = 0; z < mapSize; z++)
             {
                 IntVector3 oldCoordinates = new IntVector3(x, y, z);
                 IntVector3 newCoordinates = oldCoordinates + difference;
                 if (newCoordinates >= new IntVector3(0) && newCoordinates < new IntVector3(mapSize))
                 {
                     newMap.set(newCoordinates, map.get(oldCoordinates));
                 }
                 else
                 {
                     Chunk unload = map.get(oldCoordinates);
                     if (unload != null)
                     {
                         unload.Dispose();
                     }
                 }
             }
         }
     }
     mapOffset -= difference;
     map = newMap;
     fillMapThreaded();
 }