Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Half-edge geometry is supposed to be stored per-object, which is what this commit achieves. Previously, it would have been overwritten, if an object that happened to be equal was stored. This bug doesn't manifest so far, because the geometry that is stored is still redundantly part of `HalfEdge` itself, so you'd never overwrite something that wasn't equal anyway. This will change, of course, as soon as the redundant geometry definition in `HalfEdge` is removed. This is one of those colossally stupid bugs that shouldn't have happend in the first place. It's good though, because it helped me realize two things: 1. The distinction between `Handle` and `HandleWrapper` is a footgun. 2. That distinction is also no longer necessary. With geometry being stored in a dedicated layer, the times of needing to compare objects for equality are coming to and end. There is simply no reason to ever expect to objects to be equal, if they aren't also identical. This means, it should be possible to make `Handle` behave like `HandleWrapper`, replace `HandleWrapper` with the new and improved `Handle`, and then remove the `Eq`/`PartialEq` implementations for all objects. Because otherwise, that's another footgun waiting to happen. That's what I'll be doing next.
- Loading branch information