Ejemplo n.º 1
0
        //-----------------------------------------------------------------------------------
        private void GetFieldLocators(CNFieldController fieldController, out Vector3[] arrLocations)
        {
            GameObject[] gameObjects = fieldController.GetUnityGameObjects();

            List <Vector3> listLocatorPosition = new List <Vector3>();

            switch (Data.CreationMode)
            {
            case CNJointGroups.CreationModeEnum.AtLocatorsPositions:
                for (int i = 0; i < gameObjects.Length; i++)
                {
                    Transform tr = gameObjects[i].transform;
                    if (tr.childCount == 0)
                    {
                        listLocatorPosition.Add(tr.position);
                    }
                }
                break;

            case CNJointGroups.CreationModeEnum.AtLocatorsBBoxCenters:
                for (int i = 0; i < gameObjects.Length; ++i)
                {
                    Renderer renderer = gameObjects[i].GetComponent <Renderer>();
                    if (renderer != null)
                    {
                        Bounds bbox = renderer.bounds;
                        listLocatorPosition.Add(bbox.center);
                    }
                }
                break;

            case CNJointGroups.CreationModeEnum.AtLocatorsVertexes:
                for (int i = 0; i < gameObjects.Length; ++i)
                {
                    GameObject go         = gameObjects[i];
                    MeshFilter meshFilter = go.GetComponent <MeshFilter>();

                    if (meshFilter != null && meshFilter.sharedMesh != null)
                    {
                        UnityEngine.Mesh mesh = meshFilter.sharedMesh;
                        UnityEngine.Mesh meshTransformed;

                        CarGeometryUtils.CreateMeshTransformed(mesh, go.transform.localToWorldMatrix, out meshTransformed);
                        Vector3[] meshVertices = meshTransformed.vertices;
                        for (int j = 0; j < meshVertices.Length; ++j)
                        {
                            listLocatorPosition.Add(meshVertices[j]);
                        }

                        UnityEngine.Object.DestroyImmediate(meshTransformed);
                    }
                }
                break;

            default:
                break;
            }

            arrLocations = listLocatorPosition.ToArray();
        }
Ejemplo n.º 2
0
 //-----------------------------------------------------------------------------------
 private void GetFieldGameObjects(CNFieldController fieldController, out GameObject[] arrGameObject)
 {
     arrGameObject = fieldController.GetUnityGameObjects();
 }