private static void CreateListMeshComplexFromUnity(List <GameObject> listGameObject, List <Mesh> listMesh, out List <MeshComplex> listMeshComplex, out List <Matrix4x4> listMeshComplexLocalToWorld) { listMeshComplex = new List <CaronteSharp.MeshComplex>(); listMeshComplexLocalToWorld = new List <Matrix4x4>(); int nParentGameObjects = listGameObject.Count; for (int i = 0; i < nParentGameObjects; i++) { UnityEngine.Mesh un_mesh = listMesh[i]; GameObject parent_go = listGameObject[i]; CaronteSharp.MeshComplex car_mesh = new CaronteSharp.MeshComplex(); car_mesh.Set(un_mesh); listMeshComplex.Add(car_mesh); Matrix4x4 m_Local_to_World = parent_go.transform.localToWorldMatrix; listMeshComplexLocalToWorld.Add(m_Local_to_World); } }
public static void TransformListMesh(List <GameObject> listParentGO, List <UnityEngine.Mesh> listMesh_un, Matrix4x4 m_BoundsWorld_to_BoundsLocal, out List <CaronteSharp.MeshComplex> listMesh_car) { listMesh_car = new List <CaronteSharp.MeshComplex>(); int numParentGameObjects = listParentGO.Count; for (int i = 0; i < numParentGameObjects; ++i) { UnityEngine.Mesh un_mesh = listMesh_un[i]; GameObject parent_go = listParentGO[i]; Matrix4x4 m_Local_to_World = parent_go.transform.localToWorldMatrix; Matrix4x4 m_Local_to_Bounds = m_BoundsWorld_to_BoundsLocal * m_Local_to_World; UnityEngine.Mesh transformedMesh; CRGeometryUtils.CreateMeshTransformed(un_mesh, m_Local_to_Bounds, out transformedMesh); CaronteSharp.MeshComplex car_mesh = new CaronteSharp.MeshComplex(); car_mesh.Set(transformedMesh); UnityEngine.Object.DestroyImmediate(transformedMesh); listMesh_car.Add(car_mesh); } }