Skip to content

AvatarBridge 2.19.1 — native contacts

Choose a tag to compare

@MrTactical MrTactical released this 26 Jul 10:46

🎉 ChilloutVR's native contacts now convert — and they work in game

VRChat contacts have always had to be approximated on ChilloutVR, as pointers and triggers,
because the real contact system lives inside the game client and the CCK ships no way to author
it. AvatarBridge can now author it directly.

Confirmed in a live instance: CCK validation clean, avatar uploaded, contacts triggered by other
players, and ChilloutVR's own runtime gizmos drawing the components — which is the proof that
counts, because it means the game's real implementation is running against declarations generated
in your project.

Turn on Use ChilloutVR's native contacts under Advanced, and VRChat contacts convert one to
one:

  • Real proximity, not a distance-driven stand-in
  • Collision tags kept verbatim, so contacts still meet other avatars' on the same names
  • localOnly honoured — the legacy path has nowhere to put it
  • No sync cost at all, because every client simulates contacts for every avatar rather than
    replicating values

Still off by default, and staying that way until more than one avatar has confirmed it. If
anything is wrong the conversion switches back to the legacy path by itself and says why.

New: Tools → Avatar Bridge → Diagnose native contacts prints exactly what Unity holds, in one
click, changing nothing.

Also fixed — these affect every avatar

  • Humanoid muscle curves survive conversion. The parameter rename pass rewrote any binding of
    type Animator with an empty path; muscle and root curves have that exact shape, so
    Chest Front-Back became #Chest Front-Back and bound to nothing. Present since the first
    release, and it erased its own evidence — the check meant to catch it scans after the rename.
  • Conversions no longer flood the editor log. The pipeline ran inside OnGUI, which corrupts
    IMGUI state; one conversion produced a 38 MB log. Now deferred, and only errors and warnings
    reach the console. The report still has everything.
  • Stream-fed parameters reach other players. MuteSelf, VRMode, gesture weights and
    Upright were marked local, but the component feeding them exists only on the wearer's copy —
    so for everyone else they sat frozen forever.
  • DynamicBone gravity works on scaled avatars. ChilloutVR multiplies gravity by avatar scale
    but divides its rest-pose cancellation by it; below scale 1 the two invert and bones get pushed
    upward.
  • Core parameter declarations match the CCK's ownGrounded was Float instead of Bool,
    Emote and Toggle Int instead of Float, and five locomotion Bools were missing.
  • The override controller is wired into both slots it belongs in, including the CCK's own
    Override Controller field.

New diagnostics

  • Components ChilloutVR will delete on load. The client filters every component on an avatar
    and destroys anything not on its list, silently. FinalIK is the usual casualty.
  • Sync budget tracking — the limit is 3200 bits; parameters past it stop replicating with no
    warning in game.

Known limitation: quadruped avatars

Still on ice — see the README. Bipeds are unaffected.