public void GenerateEdges(Transform parent) { //GameObject parentObject = GameObject.FindGameObjectWithTag ("Edges"); Edge currentEdge; Intersection i1, i2; foreach (var tile in tilesDictionary) { List <Intersection> intersectionsOfTile = IntersectionsOfTile(tile.Value); for (int i = 1; i <= intersectionsOfTile.Count; i++) { i1 = IntersectionOfTileAtCorner(tile.Value, i % intersectionsOfTile.Count); i2 = IntersectionOfTileAtCorner(tile.Value, (i - 1) % intersectionsOfTile.Count); TupleInt tuple = new TupleInt(i1.id, i2.id); TupleInt reverseTuple = new TupleInt(i2.id, i1.id); if (!edgesDictionary.ContainsKey(tuple) && !edgesDictionary.ContainsKey(reverseTuple)) { Vector3 midPoint = (i1.transform.position + i2.transform.position) / 2; float angle = Intersection.AngleOfCorner((i - 1) % intersectionsOfTile.Count, hexOrientation); GameObject instantiation; if (online) { instantiation = (GameObject)PhotonNetwork.Instantiate("Edge", midPoint, Quaternion.Euler(new Vector3(0.0f, angle, 0.0f)), 0); } else { instantiation = (GameObject)Instantiate(edgePrefab, midPoint, Quaternion.Euler(new Vector3(0.0f, angle, 0.0f)), this.transform); } instantiation.transform.localScale = new Vector3(instantiation.transform.localScale.x * hexRadius, instantiation.transform.localScale.y, instantiation.transform.localScale.z); instantiation.name = "Edge " + edgeID; currentEdge = instantiation.GetComponent <Edge> (); currentEdge.transform.parent = parent.transform; currentEdge.setID(edgeID++); edgesDictionary.Add(tuple, currentEdge); edgesByIdDictionary.Add(currentEdge.getID(), currentEdge); edgesList.Add(currentEdge); List <GameTile> neighbors = getCommonTilesOfTwoIntersections(i1, i2); foreach (GameTile gameTile in neighbors) { currentEdge.addTile(gameTile); gameTile.addEdge(currentEdge); } currentEdge.addIntersection(i1); currentEdge.addIntersection(i2); i1.addLinkedEdge(currentEdge); i2.addLinkedEdge(currentEdge); i1.addNeighborIntersection(i2); i2.addNeighborIntersection(i1); } } } //storeEdgeInformation (); }