AvatarBridge 2.19.1 — native contacts
🎉 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
localOnlyhonoured — 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
typeAnimatorwith an empty path; muscle and root curves have that exact shape, so
Chest Front-Backbecame#Chest Front-Backand 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
Uprightwere 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 own —
Groundedwas Float instead of Bool,
EmoteandToggleInt 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.