List <Vector2> DrawNoise(Vector2 anchorOff, float x, float z) { List <Vector2> ModifiedChunks = new List <Vector2>(); GeneratePerlin perScript = GetComponent <GeneratePerlin> (); for (int i = 0; i < (int)m_allLinkedAttributes.GetAttribute <Vector2> ("BrushArrayDimensions").x; ++i) { for (int j = 0; j < (int)m_allLinkedAttributes.GetAttribute <Vector2> ("BrushArrayDimensions").y; ++j) { if (m_brushArray [i, j] != 0) //Reject if brush has no influence { foreach (Vector2 chunkCoord in perScript.PaintPerlinNoise(Mathf.RoundToInt(x) + i - (int)anchorOff.x, Mathf.RoundToInt(z) + j - (int)anchorOff.y, (m_brushArray[i, j] * m_allLinkedAttributes.GetAttribute <float>("BrushWeight") * m_AdditivePower))) { if (!ModifiedChunks.Contains(chunkCoord)) { ModifiedChunks.Add(chunkCoord); } } } } } return(ModifiedChunks); }
void Start() { tunnelCollider = GetComponent <MeshCollider> (); perlin = GetComponent <GeneratePerlin> (); generateMesh = GetComponent <GenerateMesh> (); Mesh mesh = new Mesh(); GetComponent <MeshFilter> ().mesh = mesh; // Create Perlin Noise double[,] noiseX = perlin.GenerateNoise(TunnelLength, PerlinWormsOctave, 0); double[,] noiseY = perlin.GenerateNoise(TunnelLength, PerlinWormsOctave, 3); // Creates Perlin Worm vectors Vector3[] vectors = CreateTunnel(TunnelLength, new Vector3(0, 5, 0), noiseX, noiseY); // Generates Mesh Vector3[] testVector = { new Vector3(0, 3, 0), new Vector3(1, 1, 0), new Vector3(1, 0, 0), new Vector3(0, 0, 1) }; Vector3[] vertices = generateMesh.CreateMesh(testVector, VoxelSize, SegmentSize, Radius, Degree); int[] triangles = generateMesh.CalculateIndices(vertices, Degree * 3 * SegmentSize * 3); // <- Tunnel Length // Set mesh data mesh.vertices = vertices; mesh.triangles = triangles; mesh.RecalculateBounds(); mesh.RecalculateNormals(); // Set Collider tunnelCollider.sharedMesh = mesh; tunnelCollider.sharedMesh.RecalculateNormals(); tunnelCollider.sharedMesh.RecalculateBounds(); }
public void createCube(int[,] seedGrid, int seedX, int seedY, int numVoxels, float voxelSize) { NumberOfVoxels = numVoxels; VoxelSize = voxelSize; perlin = GetComponent <GeneratePerlin> (); generateMesh = GetComponent <GenerateMesh> (); terrainCollider = GetComponent <MeshCollider> (); mesh = new Mesh(); GetComponent <MeshFilter> ().mesh = mesh; // Create Perlin Noise double[,] baseNoise = perlin.GenerateNoise(NumberOfVoxels, PerlinNoiseOctave, seedGrid[seedX, seedY]); noise = perlin.InterpolateNoise(baseNoise, seedGrid, seedX, seedY, PerlinNoiseOctave); // Generate Mesh Vector3[] vertices = generateMesh.CreateMesh(noise, VoxelSize, 0, MaxHeight); int[] triangles = generateMesh.CalculateIndices(vertices, (noise.GetLength(0) - 1) * (noise.GetLength(0) - 1)); // Set up mesh data mesh.vertices = vertices; mesh.triangles = triangles; mesh.RecalculateBounds(); mesh.RecalculateNormals(); // Set up collider terrainCollider.sharedMesh = mesh; terrainCollider.sharedMesh.RecalculateNormals(); terrainCollider.sharedMesh.RecalculateBounds(); }