Esempio n. 1
0
    public void Calculate3D(cFractalNoise fractalNoise, Vector2 texturePosition)
    {
        int i = 0;

        for (int x = 0; x < chunkSize.x; x++)
        {
            for (int y = 0; y < chunkSize.y; y++)
            {
                for (int z = 0; z < chunkSize.z; z++)
                {
                    if (density[x, y, z] == 0)
                    {
                        continue;
                    }

                    float value = fractalNoise.Calculate(texturePosition, scale, x, y, z);
                    if (value < 0.5f)
                    {
                        density[x, y, z] = 0;
                    }

                    i++;
                    //if (i == 100)
                    //	yield return 1;
                    //Debug.Log(density[x,y,z]);
                }
            }
        }
    }
Esempio n. 2
0
    public void AppendHeightMap(cFractalNoise caveFractal)
    {
        for (int x = 0; x < chunkSize.x; x++)
        {
            for (int z = 0; z < chunkSize.z; z++)
            {
                //Create 2d heighmap along the x and z axis
                int y2 = Mathf.Abs(Mathf.RoundToInt(heightMap[x, z] * (chunkSize.y * 0.7f))) + heightOffset;
                density[x, y2, z] = 1;

                for (int y = 0; y < chunkSize.y; y++)
                {
                    if (y == y2)
                    {
                        continue;
                    }
                    else if (y < y2)
                    {
                        density[x, y, z] = 1;
                    }
                    else if (y > y2)
                    {
                        density[x, y, z] = 0;
                    }
                }
            }
        }
    }
Esempio n. 3
0
    public void Initialize(cFractalNoise[] fractalNoise, cFractalNoise caveFractal, Vector3 chunkSizeInput, Vector2 xy)
    {
        chunkSize = chunkSizeInput;

        heightOffset = Mathf.RoundToInt(chunkSize.y * 0.3f);

        texturePositions = new Vector2[fractalNoise.Length];
        for (int i = 0; i < fractalNoise.Length; i++)
        {
            texturePositions[i] = new Vector2(xy.y * fractalNoise[i].scale * (chunkSize.z - 1), xy.x * fractalNoise[i].scale * (chunkSize.x - 1));
        }

        caveTexturePosition = new Vector2(xy.y * caveFractal.scale * (chunkSize.z - 1), xy.x * caveFractal.scale * (chunkSize.x - 1));

        CalculateFractal(fractalNoise);

        AppendHeightMap(caveFractal);

        if (generateCaves)
        {
            Calculate3D(caveFractal, caveTexturePosition);
        }
    }