public void LoadGrid(ref WorldChunk p_worldChunk, GameObject p_parent) { var grid = p_worldChunk.m_mapGrid; for (int i = 0; i < grid.getNumHorizontal(); i++) { for (int j = 0; j < grid.getNumVertical(); j++) { var v = grid.m_grid[i, j]; float x = v.x + m_origin.x; float y = v.z + m_origin.z; float[] noiseValues = getNoise(x, y, m_origin); float height = m_elevationNoise.getNoise(x, y); Vector3 newTilePos = new Vector3(v.x, (int)(height * 50), v.z); newTilePos.x += m_origin.x; newTilePos.z += m_origin.z; GameObject createdObject; GameObject toCreate = standartTile; if (noiseValues.Sum() > 0.001f) { int prefabIDX = noiseValues.ToList().IndexOf(Mathf.Max(noiseValues)); toCreate = getPrefab(prefabIDX); if (prefabIDX == 2) { float forestNoise = m_forestNoiseManager.getNoise(x, y, ref m_forestNoise); if (forestNoise > 0.0f) { toCreate = m_forestNoiseManager.getPrefab(); } else { float stoneNoise = m_stoneNoiseManager.getNoise(x, y, ref m_stoneNoise); if (stoneNoise > 0.0f) { toCreate = m_stoneNoiseManager.getPrefab(); } } } createdObject = Instantiate(toCreate, newTilePos, Quaternion.identity); } else { newTilePos.y = 0.3f * 50.0f; createdObject = Instantiate(toCreate, newTilePos, Quaternion.identity); } p_worldChunk.m_tileMap[i, j] = createdObject; createdObject.GetComponent <Tile>().setCoordText(getChunkID(newTilePos), getTileFromChunk(newTilePos, getChunkID(newTilePos))); p_worldChunk.m_tileMap[i, j].transform.parent = p_parent.transform; } } p_parent.transform.parent = m_map.transform; invoked = false; }
float[] getNoise(float x, float y, Vector3 chunkOrigin) { float[] generatedNoiseValues = new float[m_vectorNoiseGens.Length]; for (int i = 0; i < m_vectorNoiseGens.Length; i++) { if (m_vectorNoiseGens[i] != null) { NoiseManager p = m_vectorNoiseGens[i]; generatedNoiseValues[i] = p.getNoise(x + chunkOrigin.x, y + chunkOrigin.z, ref m_elevationNoise); } } string str = ""; foreach (var a in generatedNoiseValues) { str += a + " "; } //Debug.Log(str); return(generatedNoiseValues); }