public void _deflate(string parent, Vector3 v1, Vector3 v2, Vector3 v3, bool mirrorImage, string name, int tagNo, float rotation)
    {
        Vector3[] vers = new Vector3[4];

        this.deflationStep += 1;
        Vector3 v4 = HelperFunctionsClass.FourthVer(v3, v2, v1);

        vers = new Vector3[] { v1, v2, v3, v4 };


        TP.InstantiateTile(name, vers, rotation, mirrorImage);
    }
Пример #2
0
    static Tuple <Tile, float, int, Vector3[]> getClosestTile(List <Tile> tiles, Vector3 mousePos)
    {
        Tile closest = null;

        Vector3[] closestEdgeVec = new Vector3[2];
        int       closestEdge    = 0;
        float     minDist        = Mathf.Infinity;

        foreach (Tile t in tiles)
        {
            float dist = Vector2.Distance(t.centre, mousePos);
            if (dist < minDist)
            {
                closest = t;
                minDist = dist;
            }
        }

        float minDistToEdge = Mathf.Infinity;

        for (int i = 0; i < closest.edges.Count; ++i)
        {
            // foreach(Vector3 v in closest.edges[i])
            // {
            //     Debug.Log(v);
            // }

            float distToEdge = Vector2.Distance(HelperFunctionsClass.EdgeCentre(closest.edges[i]), mousePos);

            if (distToEdge < minDistToEdge)
            {
                minDistToEdge  = distToEdge;
                closestEdgeVec = closest.edges[i];
                closestEdge    = i + 1;
            }
        }

        return(new Tuple <Tile, float, int, Vector3[]>(closest, minDist, closestEdge, closestEdgeVec));
    }
Пример #3
0
    void addThickRhomb(string tileType, int closestEdge, Tile closestTile)
    {
        Vector3[] verticiesToAdd  = new Vector3[4];
        Vector3[] newVertices     = new Vector3[4];
        Vector3[] closestTileVers = closestTile.worldVertices;
        float     currentAngle    = closestTile.rotation;
        int       rotateIndex     = 5;
        float     angle           = 0f;

        var tileCondition = (tileType == "thinRhomb");

        Debug.Log(closestEdge);

        switch (closestEdge)
        {
        case 1:

            rotateIndex = tileCondition ? 0 : 0;
            angle       = tileCondition ? 18f : 72f;

            break;

        case 2:

            rotateIndex = tileCondition ? 2 : 1;
            angle       = tileCondition ? 54f : -72f;

            break;


        case 3:

            rotateIndex = tileCondition ? 3 : 1;
            angle       = tileCondition ? 126f : 72f;

            break;


        case 4:

            rotateIndex = tileCondition ? 0 : 0;
            angle       = tileCondition ? 162f : -72;

            break;
        }

        float tileRotation = currentAngle + angle;

        if (tileType == "thickRhomb")
        {
            newVertices = closestTile.worldVertices;
        }

        else if (tileType == "thinRhomb")
        {
            newVertices = closestTile.tileVertices;

            if (closestEdge == 2 || closestEdge == 3)
            {
                newVertices = HelperFunctionsClass.ThickFromThinDown(closestTileVers[rotateIndex]);
            }

            else
            {
                newVertices = HelperFunctionsClass.ThickFromThinUp(closestTileVers[rotateIndex]);
            }

            angle += currentAngle;
        }

        else
        {
            throw new Exception("What is this you are trying to add to? #madlad");
        }


        GameObject newTile = (GameObject)Instantiate(thickRhomb);

        newTile.GetComponent <ThickRhomb>().tileVertices = newVertices;
        newTile.GetComponent <ThickRhomb>().rotation     = tileRotation;
        newTile.transform.RotateAround(closestTileVers[rotateIndex], new Vector3(0, 0, 1), angle);
    }
 public void AddToRend(Vector3[] vertices, int[] triangles)
 {
     HelperFunctionsClass.AddToArray <Vector3>(ref this.vertices, vertices);
     HelperFunctionsClass.AddToArray <int>(ref this.triangles, triangles);
 }