Esempio n. 1
0
    public void SetupChunks()
    {
        int chunkW = vChunkSize.x * vTileSize.x;
        int chunkH = vChunkSize.x * vTileSize.x;

        int colCount = Mathf.Max(Screen.width / chunkH + chunkBuffer * 2, 1);
        int rowCount = Mathf.Max(Screen.height / chunkH + chunkBuffer * 2, 1);

        int startPosX = -(vChunkSize.x * colCount) / 2 + vGridCenter.x;
        int startPosY = -(vChunkSize.y * rowCount) / 2 + vGridCenter.y;

        for (int row = 0; row < rowCount; ++row)
        {
            mapRows.Add(null);
            for (int col = 0; col < colCount; ++col)
            {
                int          fChunkX = vChunkSize.x * col;
                int          fChunkY = vChunkSize.y * row;
                Vector2Int   vMapPos = new Vector2Int(fChunkX + startPosX, fChunkY + startPosY);
                TileMapChunk chunk   = new TileMapChunk(vMapPos, vChunkSize, vTileSize);
                chunk.Init();

                AddChunk(chunk, col, row, colCount);
            }
        }
    }
Esempio n. 2
0
    public void AddChunk(TileMapChunk tChunk, int iCol, int iRow, int iRowSize)
    {
        if (mapRows[iRow] == null)
        {
            mapRows[iRow] = new TileMapChunkRow(iRowSize);
        }

        mapRows[iRow].Add(tChunk, iCol);
    }
Esempio n. 3
0
    public void Add(TileMapChunk chunk, int iCol)
    {
        if (mapChunks[iCol] != null)
        {
            Delete(mapChunks[iCol]);
        }

        mapChunks[iCol] = chunk;
    }
Esempio n. 4
0
    void GenerateChunks()
    {
        for (int x = 0; x < chunkCnt.x; x++)
        {
            for (int y = 0; y < chunkCnt.y; y++)
            {
                GameObject chunk = new GameObject("Chunk_" + x + "_" + y);
                chunk.transform.SetParent(transform);
                TileMapChunk tilemapChunk = new TileMapChunk();
                tilemapChunk.layers = new TileMapLayer[tilemapLayers.Length];

                for (int i = 0; i < tilemapLayers.Length; i++)
                {
                    GameObject layer = new GameObject("Layer_" + tilemapLayers[i].name);
                    layer.transform.SetParent(chunk.transform);

                    tilemapChunk.layers[i]
                        = new TileMapLayer(tilemapLayers[i].name, tilemapLayers[i].tile, tilemapLayers[i].randomizeDensity, tilemapLayers[i].noiseThreshold, null);
                    Tilemap tm = layer.AddComponent <Tilemap>();
                    layer.AddComponent <TilemapRenderer>();

                    for (int sx = 0; sx < chunkSize.x; sx++)
                    {
                        for (int sy = 0; sy < chunkSize.y; sy++)
                        {
                            Vector3Int chunkOffset = new Vector3Int(sx + (x * chunkSize.x),
                                                                    sy + (y * chunkSize.y),
                                                                    0);
                            if (tilemapLayers[i].randomizeDensity && (noiseMap[chunkOffset.x, chunkOffset.y] > Random.value) &&
                                (noiseMap[chunkOffset.x, chunkOffset.y] > tilemapLayers[i].noiseThreshold))
                            {
                                tm.SetTile(chunkOffset, tilemapLayers[i].tile);
                            }
                            else if (!tilemapLayers[i].randomizeDensity)
                            {
                                tm.SetTile(new Vector3Int(sx + (x * chunkSize.x), sy + (y * chunkSize.y), 0), tilemapLayers[i].tile);
                            }
                        }
                    }
                    tilemapChunk.layers[i].tilemap = tm;
                }

                tilemapChunks[chunkCnt.x * x + y] = tilemapChunk;
            }
        }
    }
Esempio n. 5
0
 public void Delete(TileMapChunk chunk)
 {
 }
Esempio n. 6
0
 public Tile(TileMapChunk parent, Vector2Int tilePosition, Vector2Int tileSize)
 {
     this.parent       = parent;
     this.tilePosition = tilePosition;
     this.tileSize     = tileSize;
 }