private IntPtr allocateConvex(MeshCollider meshCollider, Matrix4x4 localToParentRelative) { if (meshCollider.sharedMesh == null) { throw new NotImplementedException("MeshCollider missing sharedMesh."); } if (meshCollider.convex == false) { throw new NotImplementedException("MeshCollider must be convex."); } Mesh mesh = meshCollider.sharedMesh; INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION meshDesc = new INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION(); meshDesc.shape.type = ShapeType.Convex; meshDesc.radius = 0.0f; meshDesc.nVerticies = (uint)mesh.vertexCount; meshDesc.pVertices = new LEAP_VECTOR[mesh.vertexCount]; for (int i = 0; i < mesh.vertexCount; i++) { LEAP_VECTOR v = localToParentRelative.MultiplyPoint(mesh.vertices[i]).ToCVector(); meshDesc.pVertices[i] = v; } IntPtr meshPtr = StructAllocator.AllocateStruct(ref meshDesc); return(meshPtr); }
private IntPtr allocateCapsule(Vector3 p0, Vector3 p1, float radius) { INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION meshDesc = new INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION(); meshDesc.shape.type = ShapeType.Convex; meshDesc.radius = radius; meshDesc.nVerticies = 2; meshDesc.pVertices = new LEAP_VECTOR[2]; meshDesc.pVertices[0] = p0.ToCVector(); meshDesc.pVertices[1] = p1.ToCVector(); IntPtr capsulePtr = StructAllocator.AllocateStruct(ref meshDesc); return(capsulePtr); }
private IntPtr allocateConvex(MeshCollider meshCollider, Matrix4x4 localToParentRelative) { if (meshCollider.sharedMesh == null) { throw new NotImplementedException("MeshCollider missing sharedMesh."); } if (meshCollider.convex == false) { throw new NotImplementedException("MeshCollider must be convex."); } Mesh mesh = meshCollider.sharedMesh; INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION meshDesc = new INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION(); meshDesc.shape.type = ShapeType.Convex; meshDesc.radius = 0.0f; meshDesc.nVerticies = (uint)mesh.vertexCount; meshDesc.pVertices = new LEAP_VECTOR[mesh.vertexCount]; for (int i = 0; i < mesh.vertexCount; i++) { LEAP_VECTOR v = localToParentRelative.MultiplyPoint(mesh.vertices[i]).ToCVector(); meshDesc.pVertices[i] = v; } IntPtr meshPtr = StructAllocator.AllocateStruct(ref meshDesc); return meshPtr; }
private IntPtr allocateCapsule(Vector3 p0, Vector3 p1, float radius) { INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION meshDesc = new INTERACTION_CONVEX_POLYHEDRON_DESCRIPTION(); meshDesc.shape.type = ShapeType.Convex; meshDesc.radius = radius; meshDesc.nVerticies = 2; meshDesc.pVertices = new LEAP_VECTOR[2]; meshDesc.pVertices[0] = p0.ToCVector(); meshDesc.pVertices[1] = p1.ToCVector(); IntPtr capsulePtr = StructAllocator.AllocateStruct(ref meshDesc); return capsulePtr; }