Esempio n. 1
0
    void Start()
    {
        material             = Instantiate(material);
        material.renderQueue = 2001;
        material.color       = color;

        List <Tuple <Vector3, Vector3> > edges = new List <Tuple <Vector3, Vector3> >();

        foreach (HexTile tile in tiles)
        {
            if (tile.isOccluded || tile.type == HexTileType.Disabled)
            {
                continue;
            }

            foreach (HexPath path in tile.neighbors)
            {
                // path is crossing a border
                if (path.target.type == HexTileType.Disabled || path.target.isOccluded || !tiles.Contains(path.target))
                {
                    LineHexagon lineHex = tile.GetComponent <LineHexagon>();
                    Vector3[]   corners = lineHex.worldSpaceCorners;

                    edges.Add(new Tuple <Vector3, Vector3>(corners[path.index], corners[(path.index + 1) % 6]));
                }
            }
        }

        List <Vector3[]> lineStrips = CreateLineStrips(edges);

        foreach (Vector3[] lineStrip in lineStrips)
        {
            GameObject stripObject = new GameObject("outline");
            stripObject.transform.SetParent(transform);
            stripObject.layer = 14;

            MeshFilter   filter   = stripObject.AddComponent <MeshFilter>();
            MeshRenderer renderer = stripObject.AddComponent <MeshRenderer>();
            renderer.material = material;

            Mesh mesh = new Mesh();
            mesh.vertices = HexHelper.CreateLineStripVertices(lineStrip, thickness / 2.0f);
            mesh.SetIndices(HexHelper.CreateLineStripIndices(lineStrip.Length, true), MeshTopology.Triangles, 0);

            filter.mesh = mesh;
        }
    }
Esempio n. 2
0
    public static GameObject CreateTileSelector(Color color, float thickness = 1.5f, float size = 0.9f)
    {
        GameObject selectorObject = new GameObject("selector");

        selectorObject.layer = 14;

        MeshRenderer renderer = selectorObject.AddComponent <MeshRenderer>();

        renderer.material       = Instantiate(instance.borderMaterial);
        renderer.material.color = color;

        selectorObject.AddComponent <MeshFilter>();

        LineHexagon hexagon = selectorObject.AddComponent <LineHexagon>();

        hexagon.thickness = instance.lineThickness * thickness;
        hexagon.scale     = instance._tileSize * size;
        hexagon.CreateMesh();

        return(selectorObject);
    }