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); }
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)); }
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); }