Exemple #1
0
    /// <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;
        }
    }
Exemple #2
0
    /// <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);
    }