polyscope icon indicating copy to clipboard operation
polyscope copied to clipboard

Fix custom indexing for edge picks

Open MarkGillespie opened this issue 1 year ago • 2 comments

Update picking logic to use custom indices when picking edges and halfedges.

I'm not totally sure if I got all of the recomputeIfPopulated(); calls correct in surface_mesh.ipp: this code works for my use case, but it's possible that there are more arrays that should really be recomputed when the edge, halfedge, or corner permutations are set. Also, now the code calls triangleAllEdgeInds.recomputeIfPopulated(); three times if the permutations are all set at once via SurfaceMesh::setAllPermutations is called.

MarkGillespie avatar Feb 16 '24 16:02 MarkGillespie

Thank you for this!

I'm looking over this and I've totally forgotten how this logic works :) What is the change in behavior before-after this PR? Is the old code buggy/crashing? Or did it ignore custom indexing in the picking UI?

nmwsharp avatar Mar 03 '24 00:03 nmwsharp

Also for these

size_t nCorners() const { return cornerDataSize == INVALID_IND ? nCornersCount : cornerDataSize; }

We probably ought to create two separate functions

size_t nCorners() const { nCornersCount; }
size_t cornerDataSize() const { return cornerDataSize == INVALID_IND ? nCornersCount : cornerDataSize; }

otherwise the nCorners() function will return something other than the number of corners, which could be super confusing.

nmwsharp avatar Mar 03 '24 00:03 nmwsharp