* Detect geometry changes by version instead of by vertex data
Every step, change detection compared each mesh collider's vertices with a
snapshot, and shape validation walked them again. With sixteen detailed
chess piece meshes that was over half of each step.
Geometry now carries a version: the identities of it and its position and
index attributes and their version counters, which three.js bumps when an
edit is marked with needsUpdate. Snapshots record it, so matching is a
string comparison; validation reruns only for a new version; Rapier's
collider fingerprint and MuJoCo's change scan use it too. Edits must be
marked with needsUpdate, as three.js already requires for rendering; an
unmarked in-place edit is no longer noticed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* Cache shapes and validation by geometry version; document the needsUpdate rule
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* Keep only geometry versions for change detection; test automatic shape keys
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>