/// <summary> /// Creates the temporaty edge dimentions prebas inside a tempGameObject that doesn't have a parent. /// </summary> private void CreateTempEdgeDimPrefabs() { // Create a temp parent EdgeDimTempParet = new GameObject("TempEdgeDimParent"); // By defalt turn all dimentions off, so they are only active at scale and transformations. EdgeDimTempParet.SetActive(false); // Create the individual edge dim ParentEdge edgeParent = PR_EDGE_GO.GetComponent <ParentEdge>(); for (int i = 0; i < edgeParent.EDGE_COLL_GO.Length; i++) { PREdge edgeCO = edgeParent.EDGE_COLL_COMP[i]; GameObject EdgeDimObj = (GameObject)Instantiate(EdgeDimPref, transform.TransformPoint(edgeCO.EdgeHolder.MidPos), Quaternion.identity, EdgeDimTempParet.transform); // Assign the variable to EdgeDim used to orient and position the text. EdgeDimObj.GetComponent <EdgeDimText>().ParentGeo = this; EdgeDimObj.GetComponent <EdgeDimText>().EdgeParent = edgeCO; } }
/// <summary> /// Clean up the duplicate edges that share the same MidPos and Instantiate the Edge prefabs. /// </summary> /// <param name="edgeColl">Dirty array with edges</param> /// <returns>Clean array of edges</returns> public PREdgeHolder[] CreateUniqEdgePrefabs(PREdgeHolder[] edgeColl) { // Group the edges according to the MidPos vector. For the cube I will have groups of 2 edges that overlap. var result = edgeColl.GroupBy(edge => edge.MidPos); PREdgeHolder[] cleaEdgeColl = new PREdgeHolder[result.Count()]; for (int i = 0; i < result.Count(); i++) { // Get only the first elemnt from each group and assign it to the clean array. cleaEdgeColl[i] = result.ToArray()[i].ToArray()[0]; // Create the objects. GameObject obj = GameObject.Instantiate(EdgePref, transform.TransformPoint(cleaEdgeColl[i].MidPos), cleaEdgeColl[i].MidRot, PR_EDGE_GO.transform); obj.name = "Edge" + i; obj.SetActive(true); // Setup the PREdge file PREdge edgeCO = obj.GetComponent <PREdge>(); edgeCO.EdgeHolder = cleaEdgeColl[i]; } return(cleaEdgeColl); }