Esempio n. 1
0
    public TileChunk TileChunkColumnGen(TileChunk chunk, int x, int y)
    {
        int stoneHeight = Mathf.FloorToInt(stoneBaseHeight);

        stoneHeight += GetNoise(x, 0, stoneMountainFrequency, Mathf.FloorToInt(stoneMountainHeight));

        int dirtHeight = Mathf.FloorToInt(dirtBaseHeight);

        dirtHeight += GetNoise(x, 0, dirtMountainFrequency, Mathf.FloorToInt(dirtMountainHeight));
        dirtHeight += GetNoise(x, y, dirtNoise, Mathf.FloorToInt(dirtNoiseHeight));

        stoneHeight += GetNoise(x, 0, stoneBaseNoise, Mathf.FloorToInt(stoneBaseNoiseHeight));

        for (int yi = chunk.pos.y; yi < chunk.pos.y + TileChunk.ChunkSizeY; yi++)
        {
            if (yi <= stoneHeight)
            {
                chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileStone());
            }
            else if (yi <= dirtHeight)
            {
                chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileDirt());
            }
            else
            {
                chunk.SetTile(x - chunk.pos.x, yi - chunk.pos.y, new TileAir());
            }
        }

        return(chunk);
    }
    public void SetTile(int x, int y, Tile tile)
    {
        TileChunk chunk = GetChunk(x, y);

        if (chunk != null)
        {
            chunk.SetTile(x - chunk.pos.x, y - chunk.pos.y, tile);
            chunk.ChunkUpdate = true;

            UpdateIfEqual(x - chunk.pos.x, 0, new TileWorldPos(x - 1, y));
            UpdateIfEqual(x - chunk.pos.x, TileChunk.ChunkSizeX - 1, new TileWorldPos(x + 1, y));
            UpdateIfEqual(y - chunk.pos.y, 0, new TileWorldPos(x, y - 1));
            UpdateIfEqual(y - chunk.pos.y, TileChunk.ChunkSizeY - 1, new TileWorldPos(x, y + 1));
        }
    }