ClothingRipper — Changelog
==========================
Releases: .1.var = v4.4 | .2.var = v4.43 | .3.var = v4.66 | (next release) = v4.72
4.44–4.66 shipped in .3.var; 4.67–4.72 are the changes since then (next release).

--- Pending next release (since .3.var / v4.66) ---

v4.72
- Removed the two-hand VR erase scheme (other controller's trigger) — it felt unintuitive. Erase is
  now always the drawing hand's GRIP held with the trigger (one controller). Removed the "One-Hand
  Draw" toggle since it's the only mode now. (In SteamVR, where the grip can't be read, erase still
  falls back internally to the other hand's trigger.)

v4.71
- Fixed VR drawing being completely broken in native Oculus (OVR): v4.68 had switched the aim ray
  to VaM's "steamVR" pointer transform in both modes, but that transform isn't the tracking pointer
  in OVR, so the ray fired from the wrong place and nothing drew. OVR now aims from the hand again
  (OpenVR still uses VaM's exact pointer).
- The plugin now draws its OWN green aiming laser while in Draw Cut Mode (VR), from the controller
  to where it hits the cloth. You can see exactly where you're drawing, so it no longer matters
  whether the ray matches VaM's own pointer / Pointer Angle.

v4.70
- Fixed compile error (CS246 'Valve' not found): VaM's plugin compiler doesn't reference SteamVR.dll,
  so the one-hand grip read can't use the Valve.VR SteamVR action. The grip is now read via OVRInput
  (Oculus/OVR mode); in SteamVR, where no sandbox-safe continuous grip read exists, one-hand erase
  falls back to the other hand's trigger. Two-hand mode is unaffected in both modes.

v4.69
- New "One-Hand Draw (grip = erase)" toggle (Cuts tab): choose your VR erase scheme — leave OFF for
  two-hand (draw = draw-hand trigger, erase = OTHER hand's trigger), or turn ON to draw and erase on
  a single controller (trigger = draw, grip + trigger = erase), leaving the other hand free. Works
  in both native Oculus (OVR) and OpenVR; combines with "Draw With Left Hand".

v4.68
- VR draw ray now follows your VaM "Pointer Angle" and matches the visible laser at any angle
  (it uses VaM's own pointer transform, which bakes in the angle, in both OpenVR and native OVR —
  the previous reconstruction was only correct at angle 0).
- Erase in the Free brush now works by holding just the OTHER hand's trigger (no need to also hold
  the draw trigger); desktop Ctrl+Space erase unchanged.
- New "Draw With Left Hand (VR)" toggle (Cuts tab): draw with the LEFT controller (the right
  trigger then erases) for left-handed users. Aim, draw, and erase all swap to match.

v4.67
- Fixed drawing cuts not working in VR when VaM is launched WITHOUT SteamVR (native Oculus / OVR
  mode, e.g. via a .bat that bypasses Steam). Two causes: (1) VaM's grab-analog getter maps to the
  index trigger only under SteamVR — in OVR it maps to the GRIP, so the Free brush silently wanted
  the grip instead of the trigger; (2) the aiming ray used a SteamVR-only pointer transform. Now the
  draw button reads the physical index trigger directly in OVR (same control for press AND hold, so
  Free/Line/Plane/Path are consistent), and the ray aims from the right hand with the Pointer Angle
  tilt in OVR while keeping the exact SteamVR pointer under OpenVR. Left trigger = erase in both.

--- Shipped in .3.var (v4.66) ---

v4.66
- "Loosen Cloth As It Tears" unpinning is now confined to the cut neighborhood and only acts once
  the seam has actually started tearing. Previously it scanned the WHOLE garment, so a worn
  swimsuit's far edges (leg openings etc.) could drift past threshold and peel off the skin on a
  Restore even though nothing near the cut was moving. Now: (a) the unpin region is the cut/seam
  dilated outward by Loosen Spread rings — far edges are never touched; (b) no peel happens until a
  seam spring tears. A real hard pull still tears the seam and peels the surrounding cloth loose.

v4.65
- Fixed "Loosen Cloth As It Tears" peeling swimsuit edges off the skin on every Restore: the
  unpin threshold was measured against edge lengths captured while the cloth sat at its tight
  skin-wrapped reset pose, so as the sim re-inflated every edge read as 3×+ stretched and unpinned.
  The unpin (and tear) rest lengths are now re-baselined from the SETTLED pose, so normal settling
  no longer trips it while a real hard pull still peels the cloth loose. Loosen can stay ON.
- Fixed the Debug wireframe not showing for open/drawn cuts (incl. tear-armed items): it indexed a
  piece partition that open cuts don't have (null) and silently failed. Open cuts now draw colored
  by the cut band (slit edges red, rest cyan); piece cuts are unchanged.

v4.64
- Fixed Tear When Pulled randomly unpinning swimsuit/garment edges from the skin on Restore: the
  cloth briefly over-stretches as the sim re-inflates after a reset, and "Unpin When Stretched"
  was peeling those edges permanently from a one-frame spike. Unpinning now requires the stretch
  to be HELD (~0.35s) before it releases, so a settle spike is ignored but a real held pull still
  peels the cloth loose as intended.

v4.63
- Fixed stays-on progressive slit only animating on the FIRST apply: after a Restore, RIP/Pre-Cut
  re-applied the cached open cut at once (instant). The user recut path now re-derives progressive
  rip / direction from the current cfg and re-animates the unzip along the line — so it works every
  time, and toggling Progressive Rip (or changing direction) takes effect on the next RIP without
  redrawing. Wireframe/preview/scene-load/Timeline re-applies still happen instantly.

v4.62
- Fixed Tear When Pulled tearing instantly after a Restore: restoring resets the cloth sim, and
  the mesh momentarily over-stretches as it wraps onto the skin before settling, which tripped
  the tear. Now a short settle window (0.6s) is enforced after (re-)arming, and the spring rest
  lengths are re-measured from the settled pose so the threshold stays accurate.

v4.61
- Open Cut: slit (stays on) now opens GRADUALLY along the line over Rip Travel Time when
  Progressive Rip is on (cloth stays pinned the whole time); off = opens at once as before.
  Reload/restore-recut applies it at once (no re-animation).

v4.60
- VR draw ray now uses VaM's own pointer transform (steamVRRightHandPointer), so it matches
  the controller laser exactly and honors the user's "Pointer Angle" preference.

v4.59
- Fixed VR draw button mapping: the TRIGGER (VaM's "Grab" action) is the draw button and is
  held-readable (hold trigger = hold Space). Left trigger = erase. Honors grab/trigger swap.

v4.58
- VR draw-mode status/help text + mapping wording.

v4.57
- VR support for the draw + drop tools: right controller pointer replaces the mouse raycast;
  trigger replaces Space; auto-disables atom grab/move while drawing (disableGrabNavigation +
  per-controller interactableInPlayMode). Auto-detects VR vs desktop.

v4.56
- Progressive Rip, Rip Travel Time and Rip Direction are now PER-ITEM (respect "Use Global
  Settings"); rip logic reads each garment's own cfg. (Old scenes start at per-item defaults.)

v4.55
- Drawn/open cuts: the Rip Direction dropdown now orients which end the tear starts from;
  the cut-line axis is captured at arm time (stable) with a canonical sign, so the direction
  no longer flips on restore.

v4.54
- Stretch-culling now confined to a near-cut band (computed at cut time), so pulling the whole
  garment no longer shatters parts away from the rip.

v4.53
- "Hide Over-Stretched Triangles" (+ "Hide Above Stretch" threshold): dynamically hides render
  triangles stretched past N× rest, killing the floor-spike / stretchy-texture artifact and
  letting the seam stay thin. Unified all mesh rebuilding through one culling builder.

v4.52
- Procedural rip grains are spread over time (scheduled voice pool) so density/speed are
  audible; darker/lower grain + live "Rip Grain Pitch" slider; instant rips emit a grain burst.

v4.51
- Procedural Rip Sound (Approach A): synthesizes a "snap" per separation so slow/progressive
  rips crackle and fast rips merge into a riiip. + Rip Grain Density. Off by default.

v4.50
- "Save As Default For This Item" + "Auto-Load Default Preset On Equip": a garment's default
  preset (cut + settings) auto-applies when it's equipped / on plugin load.

v4.49
- Animatable "Rip Progress %" slider: drive the tear by hand / keyframe in Timeline at any
  pace. Reversible — scrubbing back re-attaches the cloth.

v4.48
- "Unpin When Stretched (× rest)": cloth pulled far from the body (anywhere) peels off the
  skin once over-stretched, so a hard pull drags the rest of the garment loose.

v4.47
- Fixed: with Tear When Pulled on, you couldn't enter Draw Cut Mode (tear's auto-arm kept the
  item cut). Drawing now supersedes tearing and auto-restores a tear-armed item.

v4.46
- Open-cut loosen fix (diffusion graph was isolating the slit seeds → no loosening); tear
  auto-re-arms its cached cut after Restore so you can pull it open again without redrawing.

v4.45
- "Loosen Cloth As It Tears" (+ Loosen Spread/Strength): slack diffuses from the tear and
  drops the pin there, so the freed cloth goes slack and hangs like real ripped fabric.

v4.44
- "Tear When Pulled (VR)" (+ "Tear At Stretch"): arm a cut without ripping, then grab and pull
  the cloth apart — it tears where you stretch it, running along the cut as you pull.

--- Already shipped in .2.var (v4.43) ---

v4.43  Status warning color → darker red (readability on grey).
v4.42  Workflow text drops manual-scan step; wider tabs (208); colored status (green ok / red bad).
v4.41  "Play Random Rip Sound" off by default.
v4.40  Fixed rip sounds going silent after a plugin reload (remove clips on OnDestroy + re-queue).
v4.39  (superseded by 4.40) first attempt at the rip-sound reload fix.
v4.38  Per-item preset folders (Saves/PluginData/ClothingRipper/<item>/).
v4.37  Preset system: Save/Load Preset (cut + settings) to Saves/PluginData.
v4.36  Progressive open cuts (deferred slit staged along the line on RIP for drop-whole).
v4.35  Progressive rip for drawn cuts (sweeps along the actual cut-seam axis).
v4.34  Wireframe toggle-off fix (ClearWireframe made pure) + live rebuild on cut-shape change.
v4.33  Removed "Disable Smoothing On Rip" (always on now); Debug wireframe works before ripping.
v4.32  Bold control names in the explanation boxes; shortened the Open Cut toggle labels.
v4.31  Progressive rip stages the cut itself (springs + mesh) along the wavefront, not just pins.
v4.30  Fixed open-cut + drop-whole + RIP + Restore leaving the item stuck cut.
v4.29  Clarified the two Open Cut toggles (labels + explanation); message fixes.
