示例#1
0
        private void UpdateReachableTileVisuals(List <Tile <MyTile> > reachableTiles)
        {
            foreach (GameObject g in reachableTilesMarkers)
            {
                Destroy(g);
            }
            reachableTilesMarkers.Clear();

            foreach (Tile <MyTile> tile in reachableTiles)
            {
                GameObject tileObj = Instantiate(reachableMarker, tile.CartesianPosition, Quaternion.identity);
                tileObj.transform.position += new Vector3(0, 0.1f, 0); //0.1f = explicitly set y-Coord of the tile so it is slightly above the tiles of the map
                reachableTilesMarkers.Add(tileObj);
            }

            List <Vector3Int> borderEdges = hexMap.GetEdgePositions.TileBorders(reachableTiles);

            foreach (var edgePos in borderEdges)
            {
                EdgeAlignment orientation = HexUtility.GetEdgeAlignment(edgePos);
                float         angle       = HexUtility.anglebyEdgeAlignment[orientation];
                GameObject    edgeObj     = Instantiate(edgeReachableBorder, HexConverter.EdgeCoordToCartesianCoord(edgePos), Quaternion.Euler(0, angle, 0));
                reachableTilesMarkers.Add(edgeObj);
            }
        }
    private void UpdateVisionMarkers(IEnumerable <Vector3Int> visibleTiles)
    {
        ClearVisionMarkers();



        foreach (Vector3Int tilePos in visibleTiles)
        {
            GameObject visionObj = Instantiate(tileVisionMarker,
                                               HexConverter.TileCoordToCartesianCoord(tilePos, 0.1f), Quaternion.identity);
            visionMarkers.Add(visionObj);
        }

        List <Vector3Int> borderEdges = hexMap.GetEdgePositions.TileBorders((visibleTiles));

        foreach (Vector3Int edgePos in borderEdges)
        {
            EdgeAlignment orientation = HexUtility.GetEdgeAlignment(edgePos);
            float         angle       = HexUtility.anglebyEdgeAlignment[orientation];
            GameObject    edgeObj     = GameObject.Instantiate(
                edgeVisionBorder,
                HexConverter.EdgeCoordToCartesianCoord(edgePos),
                Quaternion.Euler(0, angle, 0)
                );
            visionMarkers.Add(edgeObj);
        }
    }
        private void UpdateVisionMarkers(IEnumerable <Vector3Int> visibleTiles)
        {
            foreach (GameObject g in visionMarkers)
            {
                Destroy(g);
            }
            visionMarkers.Clear();

            foreach (var tilePos in visibleTiles)
            {
                GameObject tileObj = Instantiate(tileVisionMarker, HexConverter.TileCoordToCartesianCoord(tilePos, 0.1f), Quaternion.identity);
                //0.1f = explicitly set y-Coord of the tile so it is slightly above the tiles of the map
                visionMarkers.Add(tileObj);
            }

            List <Vector3Int> borderEdges = hexMap.GetEdgePositions.TileBorders(visibleTiles);

            foreach (var edgePos in borderEdges)
            {
                EdgeAlignment orientation = HexUtility.GetEdgeAlignment(edgePos);
                float         angle       = HexUtility.anglebyEdgeAlignment[orientation];
                GameObject    edgeObj     = Instantiate(edgeVisionBorder, HexConverter.EdgeCoordToCartesianCoord(edgePos), Quaternion.Euler(0, angle, 0));
                visionMarkers.Add(edgeObj);
            }
        }