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