public PartDescription(int indexStart, int indexCount, TagRef <ShaderTag> shader, MeshElementType elementType)
 {
     IndexStart  = indexStart;
     IndexCount  = indexCount;
     Shader      = shader;
     ElementType = elementType;
 }
예제 #2
0
 internal static extern void Mesh_QuerySphere(
     IntPtr meshPtr,
     double cx,
     double cy,
     double cz,
     double radius,
     ref IntPtr retIndices,
     ref int numIndices,
     MeshElementType element);
예제 #3
0
        private static int[] QueryMesh(Mesh mesh, BoundingBox box, MeshElementType element)
        {
            IntPtr meshPtr       = mesh.ToUnmanagedMesh();
            IntPtr retIndicesPtr = IntPtr.Zero;
            int    nIndices      = 0;

            Unsafe.Mesh_QueryBox(meshPtr, box.ToArray(), ref retIndicesPtr, ref nIndices, element);

            int[] retIndices = new int[nIndices];
            Marshal.Copy(retIndicesPtr, retIndices, 0, nIndices);
            Unsafe.ReleaseInt(retIndicesPtr, true);
            Unsafe.Mesh_Delete(meshPtr);
            return(retIndices);
        }
예제 #4
0
        private static int[] QueryMesh(Mesh mesh, Point3d center, double radius, MeshElementType element)
        {
            IntPtr meshptr       = mesh.ToUnmanagedMesh();
            IntPtr retIndicesPtr = IntPtr.Zero;
            int    nIndices      = 0;

            Unsafe.Mesh_QuerySphere(meshptr, center.X, center.Y, center.Z, radius, ref retIndicesPtr, ref nIndices, element);

            int[] retIndices = new int[nIndices];
            Marshal.Copy(retIndicesPtr, retIndices, 0, nIndices);
            Unsafe.ReleaseInt(retIndicesPtr, true);
            Unsafe.Mesh_Delete(meshptr);
            return(retIndices);
        }
예제 #5
0
 internal static extern void Mesh_QueryBox(
     IntPtr meshPtr,
     [MarshalAs(UnmanagedType.LPArray)] double[] bounds,
     ref IntPtr retIndices,
     ref int numIndices,
     MeshElementType element);