예제 #1
0
    public void AddTile(Coordinates tileCoords)
    {
        try
        {
            if (mapData.cellMap[tileCoords.X, tileCoords.Y] == 1 || chunkTiles[tileCoords.X, tileCoords.Y] != null)
            {
                return;
            }
        }
        catch (System.Exception e)
        {
            Debug.LogError(e);
        }

        mapData.cellMap[tileCoords.X, tileCoords.Y] = 1;
        mapData.groundMap = CellularAutomata.GenerateGroundMap(mapData.cellMap);
        mapData.airMap    = CellularAutomata.GenerateCaveMap(mapData.cellMap);
        chunkTiles[tileCoords.X, tileCoords.Y] = CreateTile(tileCoords);
        if (gizmo)
        {
            debugGameObject.GetComponent <MeshRenderer>().material.mainTexture = TextureGenerator.GenerateTexture(mapData.cellMap, mapData.groundMap, mapData.airMap, mapData.waterMap);
        }
        Collider2D tempCollider = chunkTiles[tileCoords.X, tileCoords.Y].GetComponent <EdgeCollider2D>();

        if (tempCollider != null)
        {
            chunkTiles[tileCoords.X, tileCoords.Y].GetComponent <EdgeCollider2D>().enabled     = true;
            chunkTiles[tileCoords.X, tileCoords.Y].GetComponent <PlatformEffector2D>().enabled = true;
        }

        IterateTileToUpdate(tileCoords);
    }
예제 #2
0
    public void RemoveTile(Tile tile)
    {
        Coordinates tileCoords = tile.Coords;

        chunkTiles[tileCoords.X, tileCoords.Y]      = null;
        mapData.cellMap[tileCoords.X, tileCoords.Y] = 0;
        mapData.groundMap = CellularAutomata.GenerateGroundMap(mapData.cellMap);
        mapData.airMap    = CellularAutomata.GenerateCaveMap(mapData.cellMap);
        if (gizmo)
        {
            debugGameObject.GetComponent <MeshRenderer>().material.mainTexture = TextureGenerator.GenerateTexture(mapData.cellMap, mapData.groundMap, mapData.airMap, mapData.waterMap);
        }
        chunkColliders.Remove(tile.gameObject.GetComponent <EdgeCollider2D>());
        GameObject.Destroy(tile.gameObject);

        IterateTileToUpdate(tileCoords);
    }
예제 #3
0
 public MapData GenerateMapData(Coordinates mapCoordinates)
 {
     int[,] cellMap = CellularAutomata.GenerateCellularAutomata(seed, mapCoordinates, mapSize, mapSize, fillPercentage, bxsy);
     return(new MapData(cellMap, CellularAutomata.GenerateGroundMap(cellMap), CellularAutomata.GenerateCaveMap(cellMap), WaterAutomata.GenerateWaterMap(cellMap)));
 }