void UpdateTerrains() { Vector3 cameraPosition = cam.Position; currentTerrain = (int)(cameraPosition.z / terrainSize.y); if (currentTerrain > previousTerrain) { Destroy(terrains[TerrainPosition.Bot].gameObject); int size = terrains.Count - 1; for (int i = 0; i < size; i++) { terrains[(TerrainPosition)i] = terrains[(TerrainPosition)i + 1]; } GameObject regionClone = PrefabController.CreateGameObject(PrefabController.Prefab.Terrain); Vector3 position = regionClone.transform.position; position.z = terrains[(TerrainPosition)((int)TerrainPosition.Top - 1)].Position.z + terrainSize.y; regionClone.transform.position = position; TerrainGeneration terrain = regionClone.GetComponent <TerrainGeneration>(); terrain.Setup(halfRegionSize); terrains[TerrainPosition.Top] = terrain; } previousTerrain = currentTerrain; }