Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2013
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.69 KB | None | 0 0
  1.        private static int lastChunkCharged = 1;
  2.      
  3.     void Start() {
  4.                
  5.                 _terrainGrid [0,0] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  6.                 _terrainGrid [0,1] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  7.                 _terrainGrid [0,2] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  8.                 _terrainGrid [1,0] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  9.                 _terrainGrid [1,1] = linkedTerrain;
  10.                 _terrainGrid [1,2] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  11.                 _terrainGrid [2,0] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  12.                 _terrainGrid [2,1] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  13.                 _terrainGrid [2,2] = Terrain.CreateTerrainGameObject (linkedTerrain.terrainData).GetComponent<Terrain> ();
  14.                
  15.                 for (int x = 0; x < 3; x++) {
  16.                     for (int z = 0; z < 3; z++) {
  17.                        
  18.                         GenerateHeights(_terrainGrid[x,z], lastChunkCharged + z);
  19.                         //GenerateHeights(_terrainGrid[x,z]);
  20.                        
  21.                     }
  22.                 }
  23.      
  24.                 lastChunkCharged += 3;
  25.        
  26.             }
  27.        
  28.         public static void UpdateTerrainPositionsAndNeighbors()
  29.             {
  30.                
  31.                 _terrainGrid[0,0].transform.position = new Vector3(
  32.                     _terrainGrid[1,1].transform.position.x - _terrainGrid[1,1].terrainData.size.x,
  33.                     _terrainGrid[1,1].transform.position.y,
  34.                     _terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
  35.                 _terrainGrid[0,1].transform.position = new Vector3(
  36.                     _terrainGrid[1,1].transform.position.x - _terrainGrid[1,1].terrainData.size.x,
  37.                     _terrainGrid[1,1].transform.position.y,
  38.                     _terrainGrid[1,1].transform.position.z);
  39.                 _terrainGrid[0,2].transform.position = new Vector3(
  40.                     _terrainGrid[1,1].transform.position.x - _terrainGrid[1,1].terrainData.size.x,
  41.                     _terrainGrid[1,1].transform.position.y,
  42.                     _terrainGrid[1,1].transform.position.z - _terrainGrid[1,1].terrainData.size.z);
  43.                
  44.                 _terrainGrid[1,0].transform.position = new Vector3(
  45.                     _terrainGrid[1,1].transform.position.x,
  46.                     _terrainGrid[1,1].transform.position.y,
  47.                     _terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
  48.                 _terrainGrid[1,2].transform.position = new Vector3(
  49.                     _terrainGrid[1,1].transform.position.x,
  50.                     _terrainGrid[1,1].transform.position.y,
  51.                     _terrainGrid[1,1].transform.position.z - _terrainGrid[1,1].terrainData.size.z);
  52.                
  53.                 _terrainGrid[2,0].transform.position = new Vector3(
  54.                     _terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
  55.                     _terrainGrid[1,1].transform.position.y,
  56.                     _terrainGrid[1,1].transform.position.z + _terrainGrid[1,1].terrainData.size.z);
  57.                 _terrainGrid[2,1].transform.position = new Vector3(
  58.                     _terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
  59.                     _terrainGrid[1,1].transform.position.y,
  60.                     _terrainGrid[1,1].transform.position.z);
  61.                 _terrainGrid[2,2].transform.position = new Vector3(
  62.                     _terrainGrid[1,1].transform.position.x + _terrainGrid[1,1].terrainData.size.x,
  63.                     _terrainGrid[1,1].transform.position.y,
  64.                     _terrainGrid[1,1].transform.position.z - _terrainGrid[1,1].terrainData.size.z);
  65.                
  66.                
  67.                 _terrainGrid[0,0].SetNeighbors(             null,              null, _terrainGrid[1,0], _terrainGrid[0,1]);
  68.                 _terrainGrid[0,1].SetNeighbors(             null, _terrainGrid[0,0], _terrainGrid[1,1], _terrainGrid[0,2]);
  69.                 _terrainGrid[0,2].SetNeighbors(             null, _terrainGrid[0,1], _terrainGrid[1,2],              null);
  70.                 _terrainGrid[1,0].SetNeighbors(_terrainGrid[0,0],              null, _terrainGrid[2,0], _terrainGrid[1,1]);
  71.                 _terrainGrid[1,1].SetNeighbors(_terrainGrid[0,1], _terrainGrid[1,0], _terrainGrid[2,1], _terrainGrid[1,2]);
  72.                 _terrainGrid[1,2].SetNeighbors(_terrainGrid[0,2], _terrainGrid[1,1], _terrainGrid[2,2],              null);
  73.                 _terrainGrid[2,0].SetNeighbors(_terrainGrid[1,0],              null,              null, _terrainGrid[2,1]);
  74.                 _terrainGrid[2,1].SetNeighbors(_terrainGrid[1,1], _terrainGrid[2,0],              null, _terrainGrid[2,2]);
  75.                 _terrainGrid[2,2].SetNeighbors(_terrainGrid[1,2], _terrainGrid[2,1],              null,              null);
  76.                
  77.             }
  78.            
  79.             public static void UpdatePlayerAndTerrain()
  80.             {
  81.                
  82.                 Vector3 playerPosition = new Vector3(PlayerObject.transform.position.x, PlayerObject.transform.position.y, PlayerObject.transform.position.z);
  83.                 Terrain playerTerrain = null;
  84.                 int xOffset = 0;
  85.                 int yOffset = 0;
  86.                 for (int x = 0; x < 3; x++)
  87.                 {
  88.                     for (int y = 0; y < 3; y++)
  89.                     {
  90.                         if ((playerPosition.x >= _terrainGrid[x,y].transform.position.x) &&
  91.                             (playerPosition.x <= (_terrainGrid[x,y].transform.position.x + _terrainGrid[x,y].terrainData.size.x)) &&
  92.                             (playerPosition.z >= _terrainGrid[x,y].transform.position.z) &&
  93.                             (playerPosition.z <= (_terrainGrid[x,y].transform.position.z + _terrainGrid[x,y].terrainData.size.z)))
  94.                         {
  95.                             playerTerrain = _terrainGrid[x,y];
  96.                             xOffset = 1 - x;
  97.                             yOffset = 1 - y;
  98.                             break;
  99.                         }
  100.                     }
  101.                     if (playerTerrain != null)
  102.                         break;
  103.                 }
  104.                
  105.                 if (playerTerrain != _terrainGrid[1,1])
  106.                 {
  107.                     Terrain[,] newTerrainGrid = new Terrain[3,3];
  108.                     for (int x = 0; x < 3; x++)
  109.                         for (int y = 0; y < 3; y++)
  110.                     {
  111.                         int newX = x + xOffset;
  112.                         if (newX < 0)
  113.                             newX = 2;
  114.                         else if (newX > 2)
  115.                             newX = 0;
  116.                         int newY = y + yOffset;
  117.                         if (newY < 0)
  118.                             newY = 2;
  119.                         else if (newY > 2)
  120.                             newY = 0;
  121.                         newTerrainGrid[newX, newY] = _terrainGrid[x,y];
  122.                         GenerateHeights(newTerrainGrid[x,y], lastChunkCharged + y);
  123.                         //GenerateHeights(newTerrainGrid[x,y]);
  124.                     }
  125.                     lastChunkCharged += 3;
  126.                     _terrainGrid = newTerrainGrid;
  127.                     UpdateTerrainPositionsAndNeighbors();
  128.                 }
  129.                
  130.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement